#include <stdio.h>
#include <pthread.h>
#include <unistd.h>
/*
* 生产者消费者模型
*/
#include <semaphore.h>
#define CONSUMER_COUNT 1 //1个消费者
#define PRODUCER_COUNT 4 //4个生产者
#define BUFSIZE 10
int g_buf[BUFSIZE];
int in = 0;
int out = 0;
int produce_id = 0;
int consume_id = 0;
sem_t sem_full; //信号量
sem_t sem_empty;
pthread_mutex_t mutex; //互斥量
pthread_t g_thread[CONSUMER_COUNT+PRODUCER_COUNT]; //线程数组
void *consume(void *arg)
{
int i;
int num = (int)arg;
while ( 1 ) {
sem_wait(&sem_empty);
pthread_mutex_lock(&mutex);
printf("\n\nconsume\n"
#include <pthread.h>
#include <unistd.h>
/*
* 生产者消费者模型
*/
#include <semaphore.h>
#define CONSUMER_COUNT 1 //1个消费者
#define PRODUCER_COUNT 4 //4个生产者
#define BUFSIZE 10
int g_buf[BUFSIZE];
int in = 0;
int out = 0;
int produce_id = 0;
int consume_id = 0;
sem_t sem_full; //信号量
sem_t sem_empty;
pthread_mutex_t mutex; //互斥量
pthread_t g_thread[CONSUMER_COUNT+PRODUCER_COUNT]; //线程数组
void *consume(void *arg)
{
int i;
int num = (int)arg;
while ( 1 ) {
sem_wait(&sem_empty);
pthread_mutex_lock(&mutex);
printf("\n\nconsume\n"