【发布时间】:2011-05-30 01:17:30
【问题描述】:
我正在运行一个运行良好的 pthreads 程序,但是我没有看到预期的加速。我怀疑我花了很多时间来创建和销毁我的线程。
我运行的线程永远不会超过我拥有的 cpus。
在 20 分钟内,我创建了大约 5000 个线程。
我的问题是是否值得实施一个适当的静态工作池,这样我只会分配静态数量的工人?
【问题讨论】:
标签: c++ c multithreading pthreads
我正在运行一个运行良好的 pthreads 程序,但是我没有看到预期的加速。我怀疑我花了很多时间来创建和销毁我的线程。
我运行的线程永远不会超过我拥有的 cpus。
在 20 分钟内,我创建了大约 5000 个线程。
我的问题是是否值得实施一个适当的静态工作池,这样我只会分配静态数量的工人?
【问题讨论】:
标签: c++ c multithreading pthreads
首先,您应该衡量您的应用在哪里花费了所有时间。这意味着每秒大约创建 4 或 5 个线程,这很多,但可能不是您花费所有时间的地方。
但是,如果您总是将自己限制为 N 个线程,其中 N 是 CPU 的数量,您可能应该只预先创建 N 个线程并使用某种算法安排工作在每个线程上运行感觉你正在做的计算。
【讨论】: