multithreading - libuv - 事件循环和线程

标签 multithreading libuv

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

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

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

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

节日快乐。

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

最佳答案

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

关于multithreading - libuv - 事件循环和线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27624547/

相关文章:

c++ - 线程同步 : Wait on two bool variables

javascript - Web Worker 线程在 Firefox 中随机挂起

c - 如何通过在本地使用互斥变量来锁定线程?

c - 如何使用 libuv 执行 DNS 查找?

c++ - 从套接字对象获取 fd 或句柄

windows - CMake 导入库目标在 Windows 上给出未定义的 undefined symbol

c - 通过线程函数发送字符串以使用 fopen() 打开

c++ - 将线程安全添加到简单的日志记录功能?

c++ - Node.js 插件计时器上下文