2014-12-23 58 views
2

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

如果我使用uv_thread_createuv_queue_work启动多个线程,它们将运行在多个内核上(如果可用)?我希望他们这样做,因为(至少在Unix上)所有东西都是基于能够扩展到多个内核的pthread,但我不知道。

此外,我现在还无法编写代码来检查该问题,因为我在移动设备上。我刚刚发布,看看你们中的任何人是否已经知道答案。

节日快乐。

编辑:我做了测试代码,一切运行在一个核心上。

回答

3

这确实取决于内核,但通常情况下,它会将每个线程调度到不同的内核(如果有多个内核),以便可以并行运行代码。但是请注意,libuv不是线程安全的(uv_async_send除外),所以如果您有多个线程同时执行,一旦作为事件循环,从循环线程外调用libuv函数是不安全的。