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

  • 大小: 444KB
    文件類型: .zip
    金幣: 2
    下載: 0 次
    發布日期: 2021-05-29
  • 語言: C/C++
  • 標簽: 多線程??文件共享??

資源簡介

使用c語言寫的多線程讀寫文件的仿真程序,可以模擬多線程中Writer的獨占性特性

資源截圖

代碼片段和文件信息

/*
開發環境:visual?Studio?2015
其他開發環境未經測試
*/

using?namespace?std;
#include?
#include?
#include?
//***進程結構定義***//
struct?process
{
int?num;
string?ProcessStatus;
int?TimeChip;
};
//***隊列節點定義***//
typedef?struct?QNode
{
process?data;
struct?QNode?*next;
}QNode?*QueuePrt;
//***隊列結構定義***//
typedef?struct
{
QueuePrt?front?rear;?//?隊頭隊尾指針
}linkQueue;
//***隊列初始化操作***//
void?initQuene(linkQueue?*q)
{?//初始化隊列?為隊列分配內存
q->front?=?q->rear?=?new?QNode;
if?(q->front?==?nullptr)
exit(0);
q->front->next?=?nullptr;
}
//***入隊列操作***//
void?enqueue(linkQueue?*q?process?&e)
{//入隊列操作
QueuePrt?p;
p?=?new?QNode;
if?(q?==?nullptr)
exit(0);
p->data?=?e;
p->next?=?nullptr;
q->rear->next?=?p;
q->rear?=?p;
}
//***出隊列操作***//
void?dequeue(linkQueue?*q?process?&e)
{
QueuePrt?p;
if?(q->front?==?q->rear)
{//如果隊列為空
return;
}
p?=?q->front->next;
e?=?p->data;
q->front->next?=?p->next;
if?(q->rear?==?p) //如果隊列為空
q->rear?=?q->front;
delete?p;
}
//***遍歷隊列中元素并打印***//
void?traversalQueue(const?linkQueue?&q)
{
QueuePrt?p;
p?=?q.front;
while?(p?!=?q.rear?)
{
p?=?p->next;
process?d?=?p->data;
cout?< }
cout?<}
//***************************************//
int?main()
{
linkQueue?readyQueue?chokeQueue;?/*建立就緒隊列、阻塞隊列*/
initQuene(&readyQueue); /*初始化就緒隊列*/
initQuene(&chokeQueue);?/*初始化阻塞隊列*/
//輸入模塊*********************************************//
int?n; /*表示進程數*/
float?Zp; /*表示進入阻塞狀態的幾率*/
cout?<<“請輸入并發進程數(10-20):“?< cin?>>?n;
cout?<<“請輸入進入阻塞狀態概率(0-1):“< cin?>>?Zp;
//***生成進程并放入就緒隊列***//
for?(int?i?=?0;?i?!=?n;++i)
{
/*創建進程并初始化進程*/
process?p;
p.num?=?i;
p.ProcessStatus?=?“?就緒?“;
cout?< int?l; /*表示進程時間片長度*/
cin?>>?l;
p.TimeChip?=?l;
/*將進程加入就緒隊列*/
enqueue(&readyQueue?p);
}
/*按下?空格?并回車表示過了一個時間片*/
char?c; /*表示控制循環的字符*/
process?pro; /*表示運行中的程序*/
while?(cin.get(c)?&&?(c==‘?‘||c==10))
{/*進入一次循環?表示時間片變化一次*/
if?(pro.ProcessStatus?==?“?運行?“)
{/*上一時間片的進程在運行狀態時*/
//完成操作當前程序進入就緒隊列*****************//
cout?< if?(--pro.TimeChip?>?0)
{//若時間片長度大于0,回到就緒隊列
pro.ProcessStatus?=?“就緒“;
enqueue(&readyQueue?pro);
cout?< }
else
cout?< }
/*取出就緒隊列進程到運行狀態*/
if?(readyQueue.front?==?readyQueue.rear)
{
cout<<“就緒隊列為空,程序結束“< break;
}
dequeue(&readyQueue?pro);
pro.ProcessStatus?=?“?運行?“;
cout?< /*
根據概率進入不同狀態
根據輸入概率確定本次運行隊列行為
*/
srand(time(0));
float?b?=?(rand()?%?100)?/?(float)99;??/*產生0-1之間的隨機數*/
if?(b {/*依據所設置概率進入阻塞狀態*/
if?(--pro.TimeChip?>?0)
{//若進程時間片長度不為0
pro.ProcessStatus?=?“

?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件????????1149??2018-03-25?17:12??ReadMe.txt
?????文件???????58603??2018-03-25?17:15??測試截圖.png
?????目錄???????????0??2019-03-18?21:40??要求\
?????文件??????402227??2018-05-01?12:00??要求\要求.png
?????文件????????4756??2018-03-25?16:59??進程.cpp

評論

共有 條評論