-
大小: 1.36MB文件類型: .rar金幣: 2下載: 0 次發(fā)布日期: 2023-11-04
- 語言: 其他
- 標(biāo)簽: 操作系統(tǒng)??生產(chǎn)者??消費(fèi)者??
資源簡介
實(shí)驗(yàn)四、生產(chǎn)者消費(fèi)者問題(15分)
? 一個大小為3的緩沖區(qū),初始為空
? 2個生產(chǎn)者
– 隨機(jī)等待一段時間,往緩沖區(qū)添加數(shù)據(jù),
– 若緩沖區(qū)已滿,等待消費(fèi)者取走數(shù)據(jù)后再添加
– 重復(fù)6次
? 3個消費(fèi)者
– 隨機(jī)等待一段時間,從緩沖區(qū)讀取數(shù)據(jù)
– 若緩沖區(qū)為空,等待生產(chǎn)者添加數(shù)據(jù)后再讀取
– 重復(fù)4次
說明:
? 顯示每次添加和讀取數(shù)據(jù)的時間及緩沖區(qū)的狀態(tài)
? 生產(chǎn)者和消費(fèi)者用進(jìn)程模擬,緩沖區(qū)用共享內(nèi)存來實(shí)現(xiàn)

代碼片段和文件信息
/*消費(fèi)者*/
#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,表明開始的時候沒有數(shù)據(jù),無法取得,當(dāng)producer釋放一個數(shù)據(jù)時,這里開始有數(shù)據(jù)
p(sem_id?SEM_MUTEX); //P(MUTEX)
????????????????
????????????????(buf?+?buf->buf)?->buf?=?0; //取出產(chǎn)品后緩沖區(qū)置0
?????????????????buf->buf--;???//產(chǎn)品數(shù)-1
//獲取當(dāng)前時間
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)
v(sem_id?SEM_EMPTY); //V(EMPTY)
//隨機(jī)等待一段時間
int?ran=random()%5;
sleep(ran);
}
}
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件?????428032??2009-04-02?08:45??實(shí)驗(yàn)四\20062918-柳絲-實(shí)驗(yàn)四.doc
?????文件????????970??2009-03-31?22:47??實(shí)驗(yàn)四\LinuxPC\consumer.c
?????文件???????1121??2008-05-28?21:53??實(shí)驗(yàn)四\LinuxPC\head.h
?????文件????????790??2009-03-31?21:35??實(shí)驗(yàn)四\LinuxPC\pc.c
?????文件????????999??2009-03-31?22:49??實(shí)驗(yàn)四\LinuxPC\producer.c
????..A.SH.?????16384??2009-04-02?08:29??實(shí)驗(yàn)四\LinuxPC\Thumbs.db
?????文件?????148480??2009-04-01?16:01??實(shí)驗(yàn)四\WindowsPC\Debug\vc60.idb
?????文件??????77824??2009-04-01?15:58??實(shí)驗(yàn)四\WindowsPC\Debug\vc60.pdb
?????文件?????184369??2009-03-31?21:06??實(shí)驗(yàn)四\WindowsPC\Debug\WindowsPC.exe
?????文件?????195504??2009-03-31?21:06??實(shí)驗(yàn)四\WindowsPC\Debug\WindowsPC.ilk
?????文件??????18568??2009-04-01?16:01??實(shí)驗(yàn)四\WindowsPC\Debug\WindowsPC.obj
?????文件????3559256??2009-04-01?15:58??實(shí)驗(yàn)四\WindowsPC\Debug\WindowsPC.pch
?????文件?????467968??2009-03-31?21:06??實(shí)驗(yàn)四\WindowsPC\Debug\WindowsPC.pdb
?????文件???????5744??2009-03-31?21:06??實(shí)驗(yàn)四\WindowsPC\WindowsPC.cpp
?????文件???????4320??2009-03-31?21:37??實(shí)驗(yàn)四\WindowsPC\WindowsPC.dsp
?????文件????????541??2009-03-31?21:37??實(shí)驗(yàn)四\WindowsPC\WindowsPC.dsw
?????文件??????50176??2009-04-02?08:46??實(shí)驗(yàn)四\WindowsPC\WindowsPC.ncb
?????文件??????48640??2009-04-02?08:46??實(shí)驗(yàn)四\WindowsPC\WindowsPC.opt
?????文件????????737??2009-04-01?16:01??實(shí)驗(yàn)四\WindowsPC\WindowsPC.plg
?????目錄??????????0??2009-04-01?15:58??實(shí)驗(yàn)四\WindowsPC\Debug
?????目錄??????????0??2009-04-02?08:44??實(shí)驗(yàn)四\LinuxPC
?????目錄??????????0??2009-04-02?08:46??實(shí)驗(yàn)四\WindowsPC
?????目錄??????????0??2009-04-14?17:10??實(shí)驗(yàn)四
-----------?---------??----------?-----??----
??????????????5210423????????????????????23
評論
共有 條評論