我有一个 C++ 程序并在其中使用 pthreads。在这个程序中,线程用于搜索数据中的模式。这是我在程序中的做法:
for (i=0; i<NUM_THREADS; i++) {
rc = pthread_join(threads[i], NULL);
assert(0==rc);
if (args[i].islast == true || args[i].nextaddr != NULL){ //if the pattern is found
for (j = i+1; j<NUM_THREADS;j++){
rc = pthread_join(threads[j], NULL); //join the other threads that is not useful
assert(0 == rc);
}
return args[i].nextaddr; //return the address obtained in the thread of interest
}
}
但是for
加入无用线程的第二个循环是昂贵的(程序需要非常快,如果我能避免简单的“for”,这是一个了不起的成就)。
我想知道是否存在可以一次杀死所有子线程的命令。
Ps:我需要“加入”无用的线程。如果我不这样做,那么线程将无法回收,并且一段时间后我会达到线程的限制。