我理解事件循环在单个进程上运行(因此,在单个核心上),但我想知道从那里启动线程时会发生什么。
如果我使用uv_thread_create
或uv_queue_work
启动多个线程,它们是否会在多个核心上运行(如果可用)?
我希望他们这样做,因为(至少在Unix上)一切都基于pthreads,它能够扩展到多个核心,但我不知道。
另外,我现在无法编写代码来检查,因为我在移动设备上。我刚发布,看看你们有没有人知道答案。
节日快乐。
编辑:我已经制作了测试代码,所有内容都在一个核心上运行。
答案 0 :(得分:3)
这真的取决于内核,但总的来说,它会将每个线程安排到不同的核心(如果你有多个),这样你就可以并行运行你的代码。但请注意,libuv不是线程安全的(除了uv_async_send),因此如果你有多个线程同时执行,一旦成为事件循环,从循环线程外部调用libuv函数是不安全的。