我知道事件循环在单个进程上运行(因此在单个核心上),但我想知道当我从那里启动线程时会发生什么。
如果我使用 uv_thread_create
或 uv_queue_work
启动多个线程,它们是否会在多个内核上运行(如果可用)?
我希望他们这样做,因为(至少在 Unix 上)一切都基于 pthreads,它能够扩展到多个核心,但我不知道。
此外,我现在无法编写代码来检查这一点,因为我在移动设备上。我刚刚发帖看看你们中是否有人已经知道答案。
节日快乐。
编辑:我已经编写了测试代码,所有内容都在单个核心上运行。
最佳答案
这实际上取决于内核,但一般来说,它会将每个线程调度到不同的内核(如果有多个内核),以便您可以并行运行代码。但请注意,libuv 不是线程安全的(uv_async_send 除外),因此如果同时执行多个线程,一旦成为事件循环,从循环线程外部调用 libuv 函数是不安全的。
关于multithreading - libuv - 事件循环和线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27624547/