编写ping pong buffer 的c代码
时间: 2024-01-04 15:03:56 浏览: 26
可以为您提供编写ping pong buffer的c代码的参考:
```
#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>
#define BUFFER_SIZE 10
int buffer[BUFFER_SIZE];
int read_index = 0;
int write_index = 0;
int count = 0;
void* producer(void* arg) {
int value = 0;
while (1) {
if (count < BUFFER_SIZE) {
buffer[write_index] = value;
write_index = (write_index + 1) % BUFFER_SIZE;
count++;
printf("Produced %d\n", value);
value++;
}
}
}
void* consumer(void* arg) {
int value;
while (1) {
if (count > 0) {
value = buffer[read_index];
read_index = (read_index + 1) % BUFFER_SIZE;
count--;
printf("Consumed %d\n", value);
}
}
}
int main() {
pthread_t producer_tid, consumer_tid;
pthread_create(&producer_tid, NULL, producer, NULL);
pthread_create(&consumer_tid, NULL, consumer, NULL);
pthread_join(producer_tid, NULL);
pthread_join(consumer_tid, NULL);
return 0;
}
```
注意,此代码仅供参考,实际应用中可能需要根据具体情况进行修改和优化。