【问题标题】:BOOST threads: threads or processes?BOOST 线程:线程还是进程?
【发布时间】:2018-08-03 13:58:47
【问题描述】:

BOOST 线程(大约 1.49 版)是真正的线程还是单独的进程?

当我运行一个对接工具的预编译版本时,它看起来像是使用 top 的多个进程(每个进程具有不同的进程 ID 和 100% 的 CPU 使用率),但是当我自己编译它(使用 BOOST 版本 1.60)时,它们看起来像一个进程(具有单个进程 ID 和 800% 的 CPU 使用率)。

【问题讨论】:

  • boost::thread 是一个线程,仅此而已。

标签: c++ multithreading boost pthreads


【解决方案1】:

它不应该影响性能,如果这是你担心的。 很长时间,Linux 以独立进程的形式提供多线程。它们像Copy-on-Write 一样共享内存,但没有复制。由于使用更新的Linux call,当它知道线程应该组合在一起时,Top 可能会以不同的方式组织它,但“真正的”线程仍然单独的进程(运行 top -H 到像内核看到线程一样查看线程)。它们是独立调度的,在内核看来,除了一些重叠的内存页外,没有任何共同之处(初始化内存页后,内核不知道,也不在乎)。

是的,旧版本的 boost 可能使用了单独的“进程”而不是“线程”,但无论如何这都是语义。引擎盖下没有什么不同。

【讨论】:

    猜你喜欢
    • 2014-08-18
    • 1970-01-01
    • 2013-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-06
    • 2018-08-16
    • 2021-02-06
    相关资源
    最近更新 更多