私はLinuxでC++のスレッドを使ってプログラムを書いています。マルチスレッド制限?
現在、スレッドの配列を保持しており、1秒が経過するたびに、どちらが終了したかを確認して再起動します。これは悪いですか?私はこのプログラムを長い間実行し続ける必要があります。今のようにスレッドを再起動するように多くのループ(最後の試行では100回目のループ)の後でコード11を取得しています。私はスレッドを再利用していることを理解し、一度に実行するスレッドの数を少なくして、制限を打つことはないと確信しました。私が使用している配列は8のサイズしか持っていません(もちろん、私は毎回8を起動しているわけではなく、停止しているものだけです)。
アイデア?
私のコードは以下の通りです:私はループに入るとスレッドを最初に起動することができ、ちょうどそのよう
if (loop_times == 0 || pthread_kill(threads[t],0) != 0)
{
rc = pthread_create(&threads[t], NULL, thread_stall, (void *)NULL);
if (rc){
printf("ERROR; return code from pthread_create() is %d\n", rc);
exit(-1);
}
thread_count++;
}
loop_times変数があります。それ以外の場合は、スレッドが以前に開始されていないため、SEGFAULTを取得します。
また、(limits.hに含む場合も)私はPTHREAD_THREADS_MAXの値を見たいと思ってきたが、私はそれを印刷することはできません
プログラムがしばらく実行されている場合は、ps -eLfを使用して、Linuxが使用していると思うスレッド数を確認できます。 – masebase
最近のコンパイラを使用している場合は、pthreadsの代わりにC++を使用してください。 –
スレッドを強制終了することは非常に悪い習慣です。彼らは終わりましょう。多くのスレッディングAPIはあなたにこの可能性を与えません。そうすることをお勧めする人はいません。 –