Linux sem函式實現生產者消費者模型

2021-10-07 17:43:36 字數 1197 閱讀 1761

#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...