创建和关闭线程的成本是多少(以毫秒为单位)



一般来说,一个std::thread t (some function )t.join ()的CPU成本是多少?它甚至会影响 CPU 打开和关闭线程吗?

当然,线程创建和销毁确实需要付出一些代价。不如进程创建/销毁那么多,因为线程在它们之间共享大部分资源(地址空间是最重要的),但它仍然需要成本。

这就是为什么如果你有 M 个任务和 N 个

内核,其中 M>> N(明显更大),而不是为每个任务创建一个线程,如果你创建一个包含 ~N 个线程(称为 worker)的池,有时会更快。您有额外的同步成本,但通过不创建/销毁这么多线程,您可以获得收益。

加入

是另一个讨论,因为加入与关闭线程不同。联接正在等待线程完成。

最新更新