小白学c++のマルチスレッド関数の戻り値
2606 ワード
#include
#include
#include
#include
//pthread_mutex_t lock;
int ticketcount=5;
void* salewinds1(void* args)
{
while(ticketcount>0)
{
printf("window1 start %d
",ticketcount);
sleep(1);
ticketcount--;
printf("sale ticket finish:%d
",ticketcount);
}
}
void* salewinds2(void* args)
{
while(ticketcount>0)
{
printf("windows2 start:%d
",ticketcount);
sleep(1);
ticketcount--;
printf("sale finish:%d
",ticketcount);
}
}
int main(int argc,const char* argv[])
{
pthread_t thd1;
pthread_t thd2;
int val1=1;
int val2=2;
//pthread_mutex_init(&lock,NULL);
pthread_create(&thd1,NULL,salewinds1,NULL);
pthread_create(&thd2,NULL,salewinds2,NULL);
pthread_join(thd1,(void**)&val1);
pthread_join(thd2,(void**)&val2);
printf("val1:%d....val2:%d
",val1,val2);
//pthread_mutex_destroy(&lock);
return 0;
}
このコードの実行結果は次のとおりです.
windows2 start:5 window1 start 5 sale finish:4 windows2 start:4 sale ticket finish:3 window1 start 3 sale finish:2 windows2 start:2 sale ticket finish:1 window1 start 1 sale finish:0 sale ticket finish:-1 val1:-256....val2:0
val 1とval 2の値がゴミ値になりました
#include
#include
#include
#include
//pthread_mutex_t lock;
int ticketcount=5;
void* salewinds1(void* args)
{
while(ticketcount>0)
{
printf("window1 start %d
",ticketcount);
sleep(1);
ticketcount--;
printf("sale ticket finish:%d
",ticketcount);
}
return NULL;
}
void* salewinds2(void* args)
{
while(ticketcount>0)
{
printf("windows2 start:%d
",ticketcount);
sleep(1);
ticketcount--;
printf("sale finish:%d
",ticketcount);
}
return NULL;
}
int main(int argc,const char* argv[])
{
pthread_t thd1;
pthread_t thd2;
int val1=1;
int val2=2;
//pthread_mutex_init(&lock,NULL);
pthread_create(&thd1,NULL,salewinds1,NULL);
pthread_create(&thd2,NULL,salewinds2,NULL);
pthread_join(thd1,(void**)&val1);
pthread_join(thd2,(void**)&val2);
printf("val1:%d....val2:%d
",val1,val2);
//pthread_mutex_destroy(&lock);
return 0;
}
実行結果:
windows2 start:5 window1 start 5 sale finish:4 windows2 start:4 sale ticket finish:3 window1 start 3 sale finish:2 windows2 start:2 sale ticket finish:1 window1 start 1 sale finish:0 sale ticket finish:-1 val1:0....val2:0