BOOST线程:线程还是进程?

时间:2018-08-03 13:58:47

标签: c++ multithreading boost pthreads

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

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

1 个答案:

答案 0 :(得分:4)

如果您担心的话,它不应该影响性能。 Linux在很长一段时间内以独立进程的形式提供了多线程。它们像Copy-on-Write一样共享内存,但是没有复制。当使用最新的Linux call时,Top知道应该将线程归为一组时,其组织可能会有所不同,但是“真实”线程仍然是 个单独的进程(运行{{ 1}},以便在内核看到线程时看到它们)。它们是独立调度的,在内核看来,除了一些重叠的内存页面外没有其他共同之处(初始化内存页面后,内核之后再也不知道了,它并不在乎)。

所以,是的,boost的较早版本可能使用了单独的“进程”而不是“线程”,但是无论如何这都是语义。没什么不同的。