生产者消费者问题 C语言代码实现
时间: 2023-11-06 09:02:31 浏览: 121
C语言编程模拟生产者和消费者问题(附代码程序).pdf
5星 · 资源好评率100%
好的,下面是一个简单的生产者消费者问题的C语言代码实现:
```c
#include <stdio.h>
#include <pthread.h>
#define BUFFER_SIZE 10
// 全局缓冲区
int buffer[BUFFER_SIZE];
// 指向缓冲区头部和尾部的指针
int head = 0, tail = 0;
// 生产者线程
void *producer(void *arg) {
for (int i = 0; i < BUFFER_SIZE; i++) {
while (((tail + 1) % BUFFER_SIZE) == head)
; // 缓冲区满,等待消费者消费
buffer[tail] = i; // 生产一个产品
tail = (tail + 1) % BUFFER_SIZE;
printf("生产者生产了一个产品:%d\n", i);
}
return NULL;
}
// 消费者线程
void *consumer(void *arg) {
for (int i = 0; i < BUFFER_SIZE; i++) {
while (head == tail)
; // 缓冲区空,等待生产者生产
printf("消费者消费了一个产品:%d\n", buffer[head]);
head = (head + 1) % BUFFER_SIZE;
}
return NULL;
}
int main() {
pthread_t prod_thread, cons_thread;
pthread_create(&prod_thread, NULL, producer, NULL);
pthread_create(&cons_thread, NULL, consumer, NULL);
pthread_join(prod_thread, NULL);
pthread_join(cons_thread, NULL);
return 0;
}
```
希望对你有帮助!
阅读全文