私はC++プログラムを持っていて、その中でpthreadを使用しています。このプログラムでは、スレッドを使用してデータ内のパターンを検索します。これが私のプログラムでのやり方です:
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
役に立たないスレッドを結合するためのこの2番目のループはコストがかかります(プログラムは非常に高速である必要があり、単純な「for」を回避できれば、それは素晴らしい成果です)。
すべての子スレッドを一度に強制終了できるコマンドが存在するかどうかを知りたいです。
追伸:役に立たないスレッドに「参加」する必要があります。これを行わないと、そのスレッドをリサイクルできず、しばらくするとスレッドの制限に達します。