【发布时间】:2011-05-24 21:29:05
【问题描述】:
假设我有这样的代码
for(i = 0; i < i_max; i++)
for(j = 0; j < j_max; j++)
// do something
我想通过使用不同的线程来做到这一点(假设 //do something 任务彼此独立,例如考虑蒙特卡罗模拟)。我的问题是:为 i 的每个值创建一个线程是否一定比为 j 的每个值创建一个线程更好?像这样的
for(i = 0; i < i_max; i++)
create_thread(j_max);
另外:合适的线程数是多少?我应该只创建 i_max 线程,或者使用一个信号量,在任何给定时间同时运行 k
谢谢,
【问题讨论】:
-
这听起来像是你想使用线程池,而不是增加大量线程。
-
@Anon:线程池只会缓解从根本上仍然存在的问题。但当然,这可能确实有帮助。
标签: c++ multithreading performance simulation