如何使用libuv异步线程安全?

问题描述 投票:0回答:2

uv_async_send是线程安全的,但uv_async_init不是线程安全的。如果你在循环的线程中使用uv_async_init和crate aysnc句柄,也许我多次调用uv_async_send,但它的回调只会被调用一次。(我需要在我调用uv_async_send的同时调用回调)。

但是当我为其他线程中的每个回调创建异步句柄时,它并不安全。那么,如何使用线程安全的libuv?

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

c thread-safety libuv
2个回答
0
投票

也许我可以在循环的线程中创建一个异步句柄,但运行一个我自己创建的回调队列。


0
投票

uv_async_init不是线程安全的......当我为其他线程中的每个回调创建异步句柄时,它不安全...我可以在循环的线程中创建一个异步句柄

看来你误解了线程安全一词。这并不意味着你不能从循环线程以外的线程调用uv_async_init()。它只是意味着你不能并行地从多个线程中调用它(没有互锁)。

热门问题
推荐问题
最新问题