【发布时间】:2012-11-30 02:39:25
【问题描述】:
我创建了一个专门用于 libuv 运行循环的新线程。线程函数看起来像这样:
void thread_function()
{
uv_loop_t *loop = uv_loop_new();
uv_ref( loop );
uv_run( loop );
}
引用计数器增量使线程保持活动状态并处于处理 libuv 事件的状态。我希望能够通过在主线程上执行uv_unref来导致run loop结束,从而导致线程退出。
然而,在检查uv_ref 源代码时,我没有看到任何保证在并发访问期间对引用计数器变量的访问会同步。此外,在运行循环期间,我没有看到任何让操作系统放弃控制权的 yield 调用,这意味着程序将无法与其他进程很好地协作。
这让我相信我没有以正确的方式使用 libuv。如果有人能解释我做错了什么,那就太好了!
【问题讨论】:
标签: c++ node.js pthreads libuv