91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

資源簡介

實驗四、生產者消費者問題(15分) ? 一個大小為3的緩沖區,初始為空 ? 2個生產者 – 隨機等待一段時間,往緩沖區添加數據, – 若緩沖區已滿,等待消費者取走數據后再添加 – 重復6次 ? 3個消費者 – 隨機等待一段時間,從緩沖區讀取數據 – 若緩沖區為空,等待生產者添加數據后再讀取 – 重復4次 說明: ? 顯示每次添加和讀取數據的時間及緩沖區的狀態 ? 生產者和消費者用進程模擬,緩沖區用共享內存來實現

資源截圖

代碼片段和文件信息

/*消費者*/

#include?“head.h“

main(int?argcchar?*?argv[])
{
struct?queue?*buf*out;
int?sem_id?=?semget(SEM_ALL_KEY?3?IPC_CREAT|0660);
int?ij;
buf?=?getQueue();//打開共享主存
????????out?=?buf;

for(i=0;i<4;i++)
{

p(sem_id?SEM_FULL); //P(FULL)?FULL開始值為0,表明開始的時候沒有數據,無法取得,當producer釋放一個數據時,這里開始有數據
p(sem_id?SEM_MUTEX); //P(MUTEX)
????????????????

????????????????(buf?+?buf->buf)?->buf?=?0; //取出產品后緩沖區置0
?????????????????buf->buf--;???//產品數-1

//獲取當前時間
struct?timeval?curtime;
gettimeofday(&curtimeNULL);

//輸出信息
printf(“?No.%s?consumer?get?product?at?%ld:%ld.\n“????
????????????????????????argv[0]curtime.tv_seccurtime.tv_usec);
printf(“?Now?the?buffer?is?as?follows:?“);
for(j=1;j<=3;j++)
printf(“%4d“(out+j)->buf);
printf(“\n“);

v(sem_id?SEM_MUTEX); //V(MUTEX

?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----

?????文件????????970??2009-03-31?22:47??LinuxPC\consumer.c

?????文件???????1121??2008-05-28?21:53??LinuxPC\head.h

?????文件????????790??2009-03-31?21:35??LinuxPC\pc.c

?????文件????????999??2009-03-31?22:49??LinuxPC\producer.c

????..A.SH.?????16384??2009-04-02?08:29??LinuxPC\Thumbs.db

?????目錄??????????0??2012-03-23?15:27??LinuxPC

-----------?---------??----------?-----??----

????????????????20264????????????????????6


評論

共有 條評論