pthread_mutex_t mutex;
pthread_cond_t print;
int printId = 0;
void *func(void *arg)
{
int *id = (int*)arg;
for (int i = 0; i < 5; ++i)
{
pthread_mutex_lock(&mutex);
while (*id != printId)
pthread_cond_wait(&print, &mutex);
cout << *id + 1 << " : ";
for (int j = 1; j <= 5; ++j)
cout << i*15 + j + (*id)*5 << " ";
cout << endl;
printId = (printId+1) % 3;
pthread_cond_broadcast(&print);
pthread_mutex_unlock(&mutex);
}
return NULL;
}
int main()
{
pthread_t pid[3];
for (int i = 0; i < 3; ++i) pid[i] = i;
pthread_mutex_init(&mutex, NULL);
pthread_cond_init(&print, NULL);
int id[3];
for (int i = 0; i < 3; ++i) id[i] = i;
for (int i = 0; i < 3; ++i)
pthread_create(&pid[i], NULL, func, (void*)(&id[i]));
for (int i = 0; i < 3; ++i)
pthread_join(pid[i], NULL);
pthread_cond_destroy(&print);
pthread_mutex_destroy(&mutex);
return 0;
}
来个 C 语言的