#include <stdio.h> #include <stdlib.h> #include <pthread.h> #include <unistd.h> void* thread_ing(void* arg){ sleep(1); printf("in thread_ing func......\n"); pthread_exit(NULL); } int main(int argc, char* argv[]){ pthread_t pthread_id; int return_of_pc = pthread_create(&pthread_id, NULL, thread_ing, NULL); if (return_of_pc != 0){ perror("occuring NG while creating thread\n"); exit(1); } printf("After thread create on main function.......\n"); pthread_exit(NULL); // ★ // pthread_join(pthread_id,NULL); // もちろんこれでもOK return 0; }
★の点のpthread_exit()が無い場合に、なぜthread_ing()内のコードが実行されないのか
という点が上手く理解できません。
pthread_exit()がある場合には思った通りに動作するため、先に走っている最初のプロセス(thread)
がreturn 0に到達した場合、同プロセス内のthreadもその時点で終了されるということなのでしょうか?
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/07/05 00:14 編集