-
大小:文件類型: .zip金幣: 2下載: 0 次發(fā)布日期: 2023-09-18
- 語言: 其他
- 標(biāo)簽: 操作系統(tǒng)??課程設(shè)計(jì)??
資源簡(jiǎn)介

代碼片段和文件信息
#include
#include
#include
#include
#include
#include
#include
#include
#define?constumersCount?2???//消費(fèi)者數(shù)目
#define?producersCount?2????//生產(chǎn)者數(shù)目
#define?bufferSize?5????????//緩沖區(qū)大小
int?buffer[bufferSize];?????//定義緩沖區(qū)
int?in=0;??????????????????//下一個(gè)放入產(chǎn)品的緩沖區(qū)指針
int?out=0;?????????????????//下一個(gè)取出產(chǎn)品的緩沖區(qū)指針
int?produceId=0;
int?consumeId=0;
sem_t?avaliableBuffers;???????//信號(hào)量,可用空緩沖區(qū)
sem_t?avaliableProducts;???????//信號(hào)量,可用產(chǎn)品
pthread_mutex_t?mutex;?????????//互斥信號(hào)量
pthread_t?thread[constumersCount+producersCount];???//定義線程
/*
?*?消費(fèi)者模型
?*/
void?*consume(void?*arg)
{
????int?num=(int)arg;
????while(1)
????{
????????sem_wait(&avaliableProducts);??//可用產(chǎn)品減一
????????pthread_mutex_lock(&mutex);????//加鎖互斥信號(hào)量
????????printf(“線程%d?開始讀操作\n“num);
????????consumeId=buffer[out];?????????//取出產(chǎn)品
????????out=(out+1)%bufferSize;????????//指針加一
????????pthread_mutex_unlock(&mutex);???//解鎖互斥信號(hào)量
????????sem_post(&avaliableBuffers);????//可用空緩沖區(qū)加一
????????printf(“線程%d結(jié)束讀操作\n“num);
????????sleep(1);
????}
????return?NULL;
}
/*
?*生產(chǎn)者模型
?*/
void?*produce(void?*arg)
{
????int?num=(int)arg;
????while(1)
????{
????????sem_wait(&avaliableBuffers);??//可用空緩沖區(qū)減一
????????pthread_mutex_lock(&mutex);???//加鎖
????????printf(“線程%d?開始寫操作\n“num);
????????buffer[in]=produceId;??????????//將產(chǎn)品放入空緩沖區(qū)
????????in=(in+1)%bufferSize;??????????//指針指向下一個(gè)可用空緩沖區(qū)
????????pthread_mutex_unlock(&mutex);???//解鎖
????????printf(“線程%d?結(jié)束寫操作\n“num);
????????sem_post(&avaliableProducts);???//可用產(chǎn)品加一
????????sleep(5);
????}
????return?NULL;
}
int?main(void)
{
?????//初始化
????int?i;
????sem_init(&avaliableBuffers0bufferSize);//可用空緩沖區(qū)初始為bufferSize
????sem_init(&avaliableProducts00);?????//可用產(chǎn)品出是為0
????pthread_mutex_init(&mutexNULL);
????//創(chuàng)建消費(fèi)者線程
????for(i=0;?i ????{
????????pthread_create(&thread[i]NULLconsume(void*)?i);
????????printf(“線程%d發(fā)出讀操作申請(qǐng)\n“i);
????}
????//創(chuàng)建生產(chǎn)者線程
????for(i=constumersCount;?i ????{
????????pthread_create(&thread[i]NULLproduce(void?*)i);
????????printf(“線程%d發(fā)出寫操作申請(qǐng)\n“i);
????}
????//pthread_join使一個(gè)線程等待另一個(gè)線程結(jié)束
????for(int?i=0;?i ????????pthread_join(thread[i]NULL);
????//銷毀信號(hào)量
????sem_destroy(&avaliableBuffers);
????sem_destroy(&avaliableProducts);
????pthread_mutex_destroy(&mutex);
????return?0;
}
?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2018-07-03?16:49??OS課程設(shè)計(jì)\
?????目錄???????????0??2018-07-03?16:47??OS課程設(shè)計(jì)\OS課程設(shè)計(jì)代碼\
?????目錄???????????0??2018-06-08?21:09??OS課程設(shè)計(jì)\OS課程設(shè)計(jì)代碼\ProConsumer\
?????目錄???????????0??2018-06-08?21:09??OS課程設(shè)計(jì)\OS課程設(shè)計(jì)代碼\ProConsumer\bin\
?????目錄???????????0??2018-06-02?10:17??OS課程設(shè)計(jì)\OS課程設(shè)計(jì)代碼\ProConsumer\bin\Debug\
?????文件????????2765??2018-06-02?15:10??OS課程設(shè)計(jì)\OS課程設(shè)計(jì)代碼\ProConsumer\main.cpp
?????目錄???????????0??2018-06-08?21:09??OS課程設(shè)計(jì)\OS課程設(shè)計(jì)代碼\ProConsumer\obj\
?????目錄???????????0??2018-06-02?10:17??OS課程設(shè)計(jì)\OS課程設(shè)計(jì)代碼\ProConsumer\obj\Debug\
?????文件????????1083??2018-06-02?10:01??OS課程設(shè)計(jì)\OS課程設(shè)計(jì)代碼\ProConsumer\ProConsumer.cbp
?????文件?????????357??2018-06-03?22:30??OS課程設(shè)計(jì)\OS課程設(shè)計(jì)代碼\ProConsumer\ProConsumer.layout
?????目錄???????????0??2018-06-09?22:17??OS課程設(shè)計(jì)\OS課程設(shè)計(jì)代碼\內(nèi)存分配與跟蹤\
?????目錄???????????0??2018-06-10?01:05??OS課程設(shè)計(jì)\OS課程設(shè)計(jì)代碼\內(nèi)存分配與跟蹤\createData\
?????目錄???????????0??2018-06-08?21:09??OS課程設(shè)計(jì)\OS課程設(shè)計(jì)代碼\內(nèi)存分配與跟蹤\createData\bin\
?????目錄???????????0??2018-06-09?22:00??OS課程設(shè)計(jì)\OS課程設(shè)計(jì)代碼\內(nèi)存分配與跟蹤\createData\bin\Debug\
?????文件??????965708??2018-06-09?22:00??OS課程設(shè)計(jì)\OS課程設(shè)計(jì)代碼\內(nèi)存分配與跟蹤\createData\bin\Debug\createData.exe
?????文件????????1115??2018-06-04?22:29??OS課程設(shè)計(jì)\OS課程設(shè)計(jì)代碼\內(nèi)存分配與跟蹤\createData\createData.cbp
?????文件?????????161??2018-06-09?21:57??OS課程設(shè)計(jì)\OS課程設(shè)計(jì)代碼\內(nèi)存分配與跟蹤\createData\createData.depend
?????文件?????????358??2018-06-10?01:05??OS課程設(shè)計(jì)\OS課程設(shè)計(jì)代碼\內(nèi)存分配與跟蹤\createData\createData.layout
?????文件?????????480??2018-06-09?22:00??OS課程設(shè)計(jì)\OS課程設(shè)計(jì)代碼\內(nèi)存分配與跟蹤\createData\file.txt
?????文件?????????997??2018-06-09?22:00??OS課程設(shè)計(jì)\OS課程設(shè)計(jì)代碼\內(nèi)存分配與跟蹤\createData\main.cpp
?????目錄???????????0??2018-06-08?21:09??OS課程設(shè)計(jì)\OS課程設(shè)計(jì)代碼\內(nèi)存分配與跟蹤\createData\obj\
?????目錄???????????0??2018-06-09?22:00??OS課程設(shè)計(jì)\OS課程設(shè)計(jì)代碼\內(nèi)存分配與跟蹤\createData\obj\Debug\
?????文件???????11154??2018-06-09?22:00??OS課程設(shè)計(jì)\OS課程設(shè)計(jì)代碼\內(nèi)存分配與跟蹤\createData\obj\Debug\main.o
?????目錄???????????0??2018-06-09?22:17??OS課程設(shè)計(jì)\OS課程設(shè)計(jì)代碼\內(nèi)存分配與跟蹤\final\
?????目錄???????????0??2018-07-03?15:05??OS課程設(shè)計(jì)\OS課程設(shè)計(jì)代碼\內(nèi)存分配與跟蹤\final\final\
?????目錄???????????0??2018-06-09?22:17??OS課程設(shè)計(jì)\OS課程設(shè)計(jì)代碼\內(nèi)存分配與跟蹤\final\final\bin\
?????目錄???????????0??2018-06-10?14:52??OS課程設(shè)計(jì)\OS課程設(shè)計(jì)代碼\內(nèi)存分配與跟蹤\final\final\bin\Debug\
?????文件??????975500??2018-06-10?14:52??OS課程設(shè)計(jì)\OS課程設(shè)計(jì)代碼\內(nèi)存分配與跟蹤\final\final\bin\Debug\final.exe
?????文件????????1065??2018-06-10?01:05??OS課程設(shè)計(jì)\OS課程設(shè)計(jì)代碼\內(nèi)存分配與跟蹤\final\final\final.cbp
?????文件?????????201??2018-07-03?14:54??OS課程設(shè)計(jì)\OS課程設(shè)計(jì)代碼\內(nèi)存分配與跟蹤\final\final\final.depend
?????文件?????????358??2018-07-03?15:05??OS課程設(shè)計(jì)\OS課程設(shè)計(jì)代碼\內(nèi)存分配與跟蹤\final\final\final.layout
............此處省略171個(gè)文件信息
評(píng)論
共有 條評(píng)論