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

时间:2019-02-21 09:17:17

标签: c thread-safety libuv

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 :(得分:0)

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

答案 1 :(得分:0)

  

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

似乎您误解了线程安全一词。这并不意味着您不能从循环线程以外的其他线程调用uv_async_init()。这只是意味着您可能无法从多个线程并行调用(无互锁)。