two*_*e88 1 c concurrency pthreads
我有1000-10000个职位的名单.它存储在简单的char数组中.我需要尽快完成清单上的工作.
我想随时运行10个线程.如何在上一个线程完成后立即(或几乎立即)运行新线程?
#define THREADS_LIMIT 10
const char * const jobs[]= { "data1", .... }
...
for (i = 0; i < THREADS_LIMIT; ++i)
{
// run first 10 threads
}
Run Code Online (Sandbox Code Playgroud)
如何在完成之前启动线程?我可以运行10个线程,然后等待所有的线程完成,然后运行下一个10.但是有更有效的方法吗?
不要停止任何线程.只需让每个线程移动到下一个工作,而不是销毁它并创建一个新工作; 当没有更多工作时,它们会终止.现在你的主程序只是启动THREAD_LIMIT线程,然后pthread_join是所有线程.