Возможно ли, что способ, которым Rust создает потоки, плохо сочетается с зависимостью библиотеки C от pthreads? - PullRequest
0 голосов
/ 18 января 2019

Я пытаюсь использовать библиотеку C в Rust, автоматически создавая привязки с помощью bindgen. Используя эти привязки, я пишу Rust API, чтобы разработчики Rust могли использовать библиотеку C с хорошим Rust API. Все прекрасно работает, пока не задействованы потоки, и в этот момент я испытываю условия гонки и тупики.

Библиотека C была написана с учетом безопасности потоков и в значительной степени опирается на pthread_setspecific и pthread_getspecific для локального хранилища потоков. Я думаю, что вполне возможно, что условия гонки и взаимоблокировки вызваны кодом, связанным с локальными обработками потоков библиотеки C.

Возможно ли, что способ, которым Rust создает потоки, плохо сочетается с зависимостью библиотеки C от pthreads и что эта несовместимость вызывает проблемы, которые я вижу?

Я не знаю много о потоках Linux, хотя я потратил некоторое время, читая об этом в связи с этой проблемой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...