这该死的程序,怎么老有个2??C/C++ code#includestdio.h#includepthread.hint num11,num22void * my
这该死的程序,怎么老有个2??
- C/C++ code
#include<stdio.h>#include<pthread.h>int num1=1,num2=2;void * mythread(void * attr) //没有加上void 的后果是非常严重的!!{ int * num=(int *)attr; printf("%d\n",*num);}int main(int agrc,char *argv[]){ pthread_t tid1,tid2; int status; status = pthread_create(&tid1,NULL,mythread,&num1); if(status){ printf("create failed!"); return -1; } status = pthread_create(&tid2,NULL,mythread,&num2); if(status){ printf("create failed!"); return -1; } /* status = pthread_join(tid1,NULL); if(status){ printf("error1!"); return -1; }*/ status = pthread_join(tid1,NULL); if(status){ printf("error2!\n"); return -1; } return 0;}[解决办法]
2就是你第二个线程打印出来的啊
线程的启动不是按照你的代码顺序启动的,这个是靠内核的调度。
如果你希望2在1后面打印,必须要用一些线程同步的技术
