多线程的共享变量

来源:互联网 发布:php短信验证 编辑:程序博客网 时间:2024/05/21 15:47
#include "csapp.h"#define N 2void *thread(void *vargp);char **ptr;int main(void){int i;pthread_t tid;char *msgs[N] = {"Hello from foo", "Hello from, bar" };  ptr = msgs; for (i = 0; i < N; i++) { Pthread_create(&tid, NULL, thread, &i); } Pthread_exit(NULL);}void *thread(void *vargp){int myid = *((int*)vargp);static int cnt = 0;printf("[%d]: %s (cnt = %d)\n", myid, ptr[myid], ++cnt);return NULL;}

运行:./a.out

   [2]:  (cnt = 1)
[2]:  (cnt = 2)


 因为创建了两次线程后,才会去跑线程处理函数, 当跑线程处理函数的时候,此时i = 2, 所以产生了这些线程同步的问题。