多线程的共享变量

#include "csapp.h"
#define N 2
void *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, 所以产生了这些线程同步的问题。



你可能感兴趣的:(android,linux)