我正在运行一个运行得非常好的pthread程序,但是我没有看到我期望的加速。我怀疑我花了太多的时间来创建和销毁我的线程。
我在任何时候运行的线程都比我的cpus多。
在20分钟的时间内,我创建了大约5000个线程。
我的问题是,是否值得实现一个适当的静态工作池,以便我只分配静态数量的工作进程?
发布于 2011-05-30 10:59:03
首先,你应该衡量你的应用程序把所有的时间都花在了哪里。这意味着大约每秒创建4到5个线程,这是很多,但可能不是你花费所有时间的地方。
但是,如果您总是将自己限制为N个线程,其中N是CPU的数量,那么您可能应该预先创建N个线程,并使用某种算法来调度在每个线程上运行的工作,以便对您正在进行的计算有意义。
https://stackoverflow.com/questions/6171513
复制相似问题