#include int sem_init(sem_t *sem, int pshared, unsigned int value);
//引數一:訊號量標誌
//引數二:0表示程序內通用,1表示程序間通用,一般0
//引數三:要設定的初始值是多少
int sem_wait(sem_t *sem); //讓訊號量的值-1,相當於p操作
int sem_post(sem_t *sem); //讓訊號量的值+1,相當於v操作
int sem_destroy(sem_t *sem); //銷毀訊號量
#include
#include
#include
#define pro 3
#define cor 2
#define buffsz 5
sem_t full_id;
sem_t empty_id;
pthread_t tid[pro+cor]
;pthread_mutex_t mutex;
int buf[buffsz]
;int in =0;
int out =0;
int ready =1;
void
*pro
(void
*arg)
return arg;
}void
*cor
(void
*arg)
printf
("\n");
}sleep(2
);out =
(out+1)
%buffsz;
pthread_mutex_unlock
(&mutex)
;sem_post
(&full_id);}
return arg;
}int
main
(void
)//建立消費者執行緒
for(i=
0; i)//等著**所有執行緒
for(i=
0; i)pthread_mutex_destroy
(&mutex)
;sem_destroy
(&full_id)
;sem_destroy
(&empty_id)
;}
vc實現生產者消費者
生產者消費者問題是乙個著名的程序同步問題。它的描述是 有一群生產者程序在生產產品,並將這些產品提供給消費者程序去消費。為使生產者程序與消費者程序能併發執行,在兩者之間設定了乙個具有n個緩衝區的緩衝池,生產者程序將它所生產的產品放入乙個緩衝區中 消費者程序可從緩衝區中取走產品去消費。儘管所有的生產者程...
生產者 消費者問題實現
include include include include include include define need p 2 生產者程序數 define need c 2 消費者程序數 define works p 10 每個生產者程序執行的次數 define works c 10 每個消費者程序...
生產者 消費者模式實現
生產者是指 生產資料的執行緒 消費者是指 使用資料的執行緒 生產者和消費者是不同的執行緒,他們處理資料的速度是不一樣的,一般在二者之間還要加個 橋梁參與者 用於緩衝二者之間處理資料的速度差。下面用 來說明 生產者 public class makerthread extends thread pub...