操作系统以及Linux上都详细地介绍了信号量以及锁的概念,其重要性可想而知,这事我写的一个比较简单的多线程实现的生产者消费者模型,我会对里面用到的函数等做出比较详细的解释,以方便解读。
#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>
#include <unistd.h>
#include <semaphore.h>
#define PRODUCER 5 //生产者数目
#define CONSUMER 5 //消费者数目
#define POOL_SIZE 11 //缓冲池大小
int pool[POOL_SIZE];
int head = 0; //第一个产品的位置
int rear = 0; //最后一个产品的位置
sem_t room_sem; //sem变量相当于,创建空余位置的信号量
sem_t product_sem; //商品数目的信号量,和上面一个一起配合同步
pthread_mutex_t mutex; //线程