私にはマルチスレッドの概念がはじまりました。参加する前にスレッドが終了している理由は不思議でした。彼らは私のpthreadに到達する前に基本的に、私は、プロセスIDのグローバルリストを維持しています、私は今問題がある参加する前にスレッドが終了する
if(pthread_create(&thread_id[i], NULL, function_to_execute, NULL)) {
fprintf(stderr, "error thread not created\n");
}
を呼び出すことによって、反復的にそれらを作成し、すべての私のスレッドが出ている
pthread_join(thread_id[i], NULL);
いるに参加スレッドが作成された直後に呼び出される関数呼び出しに深くネストされています。私はいくつかのロックや何かをするかどうか分からない、またはスレッドが終了する前にjoinステートメントまで待つように追加のコマンドを追加する。
'function_to_execute'に依存します。たぶんそれは例外をスローしますか?そして、彼らが「参加」に達する前に退会していることをどのように伝えることができますか?多分無限ループや何かにいるかもしれません – AhmadWabbi
あなたが 'pthread_join()'と一緒にいるスレッドが既に終了している場合は問題ありません。この場合、 'pthread_join()'が直ちに返りますが、それ以外の場合は待たなければなりません。 *しかし*:あなたは既に 'pthread_join()'や 'pthread_detach()'されたスレッドで 'pthread_join()'しようとしてはいけません。 – EOF
非常に良いスレッドチュートリアル:https://computing.llnl.gov/tutorials/pthreads/ – yano