c语言双线程卖票代码
时间: 2023-12-19 09:28:50 浏览: 32
以下是一个简单的C语言双线程卖票代码,使用了互斥锁来保证线程安全:
```
#include <stdio.h>
#include <pthread.h>
int tickets = 100;
pthread_mutex_t mutex;
void* sell_tickets(void* arg) {
while (1) {
pthread_mutex_lock(&mutex);
if (tickets > 0) {
printf("%s sells ticket %d\n", (char*)arg, tickets);
tickets--;
} else {
pthread_mutex_unlock(&mutex);
break;
}
pthread_mutex_unlock(&mutex);
}
return NULL;
}
int main() {
pthread_t t1, t2;
pthread_mutex_init(&mutex, NULL);
pthread_create(&t1, NULL, sell_tickets, "Window 1");
pthread_create(&t2, NULL, sell_tickets, "Window 2");
pthread_join(t1, NULL);
pthread_join(t2, NULL);
pthread_mutex_destroy(&mutex);
return 0;
}
```
该代码创建了两个线程,分别代表两个售票窗口。每个线程都会不断地尝试卖票,直到票卖完为止。在卖票的过程中,使用了互斥锁来保证线程安全,避免了多个线程同时卖同一张票的情况。