c++ - boost 线程 : threads or processes?

标签 c++ multithreading boost pthreads

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/

相关文章:

c++ - 升级 boost 版

c# - 适用于 .NET 的 Node.js

c++ - boost asio streambuf 在调用 consume 后不释放内存?

c++ - 如何为 terrain direct x 11 C++ 正确绘制平面三角形网格

c++ - 右值引用与 "&& &&"崩溃的示例

java - 这个线程程序每次都会向我显示不同的答案

c++ - 如何在 C++ 中从头开始反序列化文件(没有库)

c++ - 如何用两点和步骤c++之间的元素初始化 vector

c++ - std::stringstream 如何处理 operator<< 中的 wchar_t*?

c++ - 是否有与 WaitforSingleObject 等效的 C++?