#include <pthread.h>
#include <stdio.h>
#include <unistd.h>
int var = 1001;
void * func (void *arg) {
printf("I am thread,var=%d\n",var); // 1001
var = 1005;
printf("I am thread,var=%d\n",var); // 1005
sleep(2); // 确保主控线程能够修改完成 该时间马上继续执行main函数
printf("after sleep,I am thread,var=%d\n",var); // 1007
return NULL; }
int main()
{
pthread_t tid;
pthread_create(&tid, NULL, func, NULL); //创建子线程
sleep(1); // 确保子线程修改全局变量完成 该时间马上执行子线程回调函数
printf("I am main thread,var=%d\n",var); //1005
var = 1007;
printf("I am main thread,var=%d\n",var); // 1007
sleep(3); // 确保子线程执行倒数第2行完成
return 0;
}
结果: 1001 1005 1005 1007 1007