[問題] pthread的問題
void* tfunction(void* input)
{
printf("Thread %d is executing\n", *((int*)input));
pthread_exit((int*)1);
}
int main(int argc, char** argv)
{
int error1;
int error2;
int input1=1;
int input2=2;
pthread_t thread1;
pthread_t thread2;
error1=pthread_create(&thread1, NULL, tfunction, (void*)&input1);
error2=pthread_create(&thread2, NULL, tfunction, (void*)&input2);
if(error1!=0||error2!=0) printf("Error\n");
return 0;
}
以上code成功compile後 應該是要printf出 "Thread 1 is executing" (input1的值)
可是結果上面那個數字都會跳來跳去
ex.
Thread -801803032 is executing.
有時候也會是1
請問這樣的code發生什麼問題?
我知道會有優先權的問題 應該要加入pthread_join等某一個thread做完後另一個再做
但是我就是不明白這樣寫數字為什麼會亂跳
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.112.154.171
→
08/03 16:53, , 1F
08/03 16:53, 1F
→
08/03 16:53, , 2F
08/03 16:53, 2F
→
08/03 16:54, , 3F
08/03 16:54, 3F
→
08/03 16:54, , 4F
08/03 16:54, 4F
→
08/03 16:55, , 5F
08/03 16:55, 5F
→
08/03 16:56, , 6F
08/03 16:56, 6F
※ 編輯: WWWZZZXXXMMM 來自: 140.112.154.171 (08/03 16:57)
→
08/03 17:02, , 7F
08/03 17:02, 7F
→
08/03 17:04, , 8F
08/03 17:04, 8F
→
08/03 17:06, , 9F
08/03 17:06, 9F
→
08/03 17:08, , 10F
08/03 17:08, 10F
→
08/03 17:11, , 11F
08/03 17:11, 11F
在下面加上這兩行就會正常印出結果
pthread_join(thread1, (void*)&return1);
pthread_join(thread2, (void*)&return2);
但還是令人百思不解我發文的這個疑問點如何解釋
※ 編輯: WWWZZZXXXMMM 來自: 140.112.154.171 (08/03 17:13)
→
08/03 17:39, , 12F
08/03 17:39, 12F