2

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

uv_thread_create如果我使用or启动多个线程uv_queue_work,它们会在多个内核上运行(如果可用)?

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

另外,我现在无法编写代码来检查它,因为我在移动设备上。我只是发帖看看你们中是否有人已经知道答案。

节日快乐。

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

4

1 回答 1

3

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

于 2015-01-09T09:38:21.090 回答