Как использовать libuv Async потокобезопасных? - PullRequest
0 голосов
/ 21 февраля 2019

uv_async_send является поточно-ориентированным, но uv_async_init не является поточно-безопасным.если в потоке цикла используется uv_async_init и ящик aysnc, возможно, я вызову uv_async_send много раз, но его обратный вызов будет вызываться только один раз (мне нужно, чтобы обратный вызов вызывался в те же моменты времени, когда я вызываю uv_async_send).

, нонебезопасно, когда я создаю асинхронный дескриптор для каждого обратного вызова в другом потоке.Итак, как использовать libuv потокобезопасных?

http://docs.libuv.org/en/v1.x/async.html?highlight=uv_async_init

Ответы [ 2 ]

0 голосов
/ 22 февраля 2019

uv_async_init не является потокобезопасным… это не безопасно, когда я создаю асинхронный дескриптор для каждого обратного вызова в другом потоке… я могу создать асинхронный дескриптор в потоке цикла

Похоже, вы неправильно понялитермин потокобезопасен .Это не означает, что вы не можете вызывать uv_async_init() из потока, отличного от потока цикла.Это просто означает, что вы не можете вызывать его из нескольких потоков параллельно (без блокировки).

0 голосов
/ 21 февраля 2019

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

...