【问题标题】:libuv - event loop and threadslibuv - 事件循环和线程
【发布时间】:2014-12-23 16:45:37
【问题描述】:

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

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

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

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

节日快乐。

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

【问题讨论】:

    标签: multithreading libuv


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-10-31
      • 1970-01-01
      • 2018-09-23
      • 1970-01-01
      • 1970-01-01
      • 2017-04-13
      • 2018-06-16
      • 1970-01-01
      相关资源
      最近更新 更多