#include <stdio.h>
#include <pthread.h>
pthread_mutex_t mutex; // 互斥锁
int ticket = 100; // 票
void *sellticket(void *v)
{
long num = (long)v; // 窗口号
srand((unsigned int)time(NULL));
while (1)
{
usleep(100000*(rand()%10+1));
pthread_mutex_lock(&mutex); // 上锁
if (0 == ticket)
{
printf ("票卖完了\n");
pthread_mutex_unlock(&mutex); // 解锁
break;
}
printf ("%ld 窗口卖了一张票,座位号:%d\n", num, ticket);
ticket -= 1;
pthread_mutex_unlock(&mutex); // 解锁
}
}
int main(int argc, char **argv)
{
long i;
pthread_t thread[4];
for (i = 0; i < 4; i++)
{
pthread_create(&thread[i], NULL, sellticket, (void*)(i+1));
}
pthread_mutex_init(&mutex, NULL);
pthread_join(thread[0], NULL);
pthread_join(thread[1], NULL);
pthread_join(thread[2], NULL);
pthread_join(thread[3], NULL);
pthread_mutex_destroy(&mutex);
return 0;
}
线程——互斥锁
猜你喜欢
转载自blog.csdn.net/ypjsdtd/article/details/86346328
今日推荐
周排行