BOOST 线程(1.49 版本左右)是真正的线程还是单独的进程?
当我运行一个对接工具的预编译版本时,它看起来像几个使用 top 的进程(具有不同的进程 ID 和 100% CPU 使用率),但是当我自己编译它时(使用 BOOST 版本 1.60),它们看起来就像一个进程(具有单个进程 ID 和 800% 的 CPU 使用率)。
最佳答案
它不应该影响性能,如果那是您担心的。 Linux 很长 以单独进程的形式提供多线程。他们像Copy-on-Write一样共享内存, 但没有复制。由于使用更新的 Linux call,当 Top 知道线程应该组合在一起时,它可能会以不同的方式组织它。 ,但“真正的”线程仍然是 独立的进程(运行 top -H
以在内核中查看线程)。它们是独立调度的,在内核看来除了一些重叠的内存页外没有任何共同点(初始化内存页后,内核不知道之后的事情,也不关心)。
所以是的,旧版本的 boost 可能使用单独的“进程”而不是“线程”,但无论如何这都是语义。引擎盖下没有什么不同。
关于c++ - boost 线程 : threads or processes?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51674311/