libuv - 事件循环和线程

时间:2014-12-23 16:45:37

标签: multithreading libuv

我理解事件循环在单个进程上运行(因此,在单个核心上),但我想知道从那里启动线程时会发生什么。

如果我使用uv_thread_createuv_queue_work启动多个线程,它们是否会在多个核心上运行(如果可用)?

我希望他们这样做,因为(至少在Unix上)一切都基于pthreads,它能够扩展到多个核心,但我不知道。

另外,我现在无法编写代码来检查,因为我在移动设备上。我刚发布,看看你们有没有人知道答案。

节日快乐。

编辑:我已经制作了测试代码,所有内容都在一个核心上运行。

1 个答案:

答案 0 :(得分:3)

这真的取决于内核,但总的来说,它会将每个线程安排到不同的核心(如果你有多个),这样你就可以并行运行你的代码。但请注意,libuv不是线程安全的(除了uv_async_send),因此如果你有多个线程同时执行,一旦成为事件循环,从循环线程外部调用libuv函数是不安全的。