私はいくつかのマルチスレッドプログラムを練習していましたが、この出力の背後にあるロジックを理解できませんでした。pthread関数を使った静的記憶
#include<stdio.h>
#include<stdlib.h>
#include<pthread.h>
int print_message(void* ptr);
int main()
{
pthread_t thread1,thread2;
char *mesg1 = "Thread 1";
char *mesg2 = "Thread 2";
int iret1, iret2;
pthread_create(&thread1, NULL, print_message, (void *)mesg1);
pthread_create(&thread2, NULL, print_message, (void *)mesg2);
pthread_join(thread1,(void*)&iret1);
pthread_join(thread2, (void*)&iret2);
printf("Thread 1 return : %d\n", (int)iret1);
printf("Thread 2 return : %d\n", (int)iret2);
return 0;
}
int print_message(void *ptr)
{
char *mesg;
static int i=0;
mesg = (char *)ptr;
printf("%s\n",mesg);
i++;
return ((void*)i);
}
私は出力
Thread 1
Thread 2
Thread 1 return : 1
Thread 2 return : 2
期待していたが、私は、出力
Thread 1
Thread 2
Thread 1 return : 0
Thread 2 return : 2
いくつかは、これは私に明確にしてくださいでしたが取得していますか?また、pthread関数の使用上の誤りがあれば指摘してください。