#include <windows.h>
#include <stdio.h>
#include <stdlib.h>
typedef HANDLE Semaphore; //信号量的Windows原型
#define P(S) WaitForSingleObject(S, INFINITE) // 定义Windows下的P操作
#define V(S) ReleaseSemaphore(S, 1, NULL) // 定义Windows下的V操作
#define rate 1000
#define CONSUMER_NUM 10 /* 消费者个数 */
#define PRODUCER_NUM 10 /* 生产者个数 */
#define BUFFER_NUM 4 /* 缓冲区个数 */
char *thing[10] = {"猪耳朵", "牛肝", "羊蹄", "驴肉", "马肉", "狗肉", "猴脑", "老虎屁股", "大象肚", "河马大肠"};
struct Buffer
{
int product[BUFFER_NUM]; // 缓冲区
int start, end; // 两个指针
} g_buf;
Semaphore g_semBuffer, g_semProduct, g_mutex;
c语言描述生产者消费者问题
最新推荐文章于 2024-07-08 22:18:12 发布
该博客通过C语言展示了如何使用Windows API实现生产者消费者问题。博客中定义了信号量P和V操作,创建了多个消费者和生产者线程,它们通过共享缓冲区进行交互。生产者线程生成随机产品并放入缓冲区,消费者线程则从缓冲区取出产品进行消费。整个过程演示了线程同步和资源管理的概念。
摘要由CSDN通过智能技术生成