亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? perr.cpp

?? 讀寫問題的vc仿真代碼
?? CPP
字號:
// perr.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"




#include <stdlib.h>

#include <windows.h>
#include <stdio.h>

 

//#include "Reader-Writer.h"

//#include "Semaphore.h"

 

// 這是 Windows 下多線程工作的 P 操作

#define P(S) WaitForSingleObject(S, INFINITE)

 

// 這是 Windows 下多線程工作的 V 操作

#define V(S) ReleaseSemaphore(S, 1, NULL)

 

const int RN = 5; // 所有讀者總數

const int WN = 3; // 所有寫者總數

 

HANDLE Sdoc; // 文檔信號量——互斥量,W

HANDLE Sr;   // 讀者信號量——廣義信號量

 

HANDLE Scnt; // 保護 g_cntReader 的互斥量, 相當于mutex

int g_cntReader = 0; // 讀者個數計數器,readcount

 



// |  funcname  :  JustWait ( ) 

// +  note      :  顯示一些信息,讓后等待

// |               

// +-----------------------------------------------------------------+

// |  ret val   :  void 

// |               

// +  Parameter :  

// |         [    int ] - nReader 讀者(寫者)編號,讀者>0,寫者<0

// |         [    int ] - min     操作等待的最短時間

// |         [    int ] - max     操作等待得最長時間,實際等待的時間介于兩者之間

// |         [ LPCSTR ] - info    要顯示的信息

void JustWait(int nReader, int min, int max, LPCSTR info)

// +-----------------------------------------------------------------+

{

    // 等待時間的基本量,以毫秒表示

    const int BASETIME = 1000;

 

    // 實際等待得時間

    int wait_time = 0;

    if (max==min)  // 判斷是為了避免 %0錯誤,注意取隨機值

        wait_time = min*BASETIME;

    else

        wait_time = rand()%(max*BASETIME-min*BASETIME) + min*BASETIME;

 

    // 最終顯示的信息緩沖

    char s_out[128];

 

    // 讀者大于0,寫者小于0

    if (nReader > 0)

        sprintf(s_out, "Reader [%d]: %s\n", nReader, info);

    else

        sprintf(s_out, "\tWriter [%d]: %s\n", -nReader, info);

 

    // 打印

    printf(s_out);

 

    // 然后等待

    Sleep(wait_time);

}

// 讀者線程

DWORD  WINAPI Reader(LPVOID lpPara)

{

    // 注意是靜態變量,可以使每來一個讀者增加一

    static int reader_num = 1;

    int i = reader_num ++;

 

    while (1)

    {

        JustWait(i, 1, 2, "你好,我想讀,可以嗎?");

       

       // 讀者未滿

        P(Sr);

       

       // 鎖定讀者計數器

        P(Scnt);//P(mutex)

        printf("//: %d Readers in, [%d] in\n", g_cntReader, i);

        g_cntReader ++;

       // 如果是第一個讀者

       if (g_cntReader == 1) 

       {

           JustWait(i, 1, 2, "我是第一個讀者!");

           // 鎖定文檔

           P(Sdoc);

           printf("#----------[%d] <== 緩沖區已被占用\n", i);

           JustWait(i, 1, 2, "我已取得緩沖區的控制權");

       }

       // 解鎖讀者計數器

        V(Scnt);

 

       // 讀ing…………

        JustWait(i, 2, 5, "我正在讀。。。。。。");

       

        JustWait(i, 1, 2, "讀完了,我想退出。");

 

       // 鎖定讀者計數器

        P(Scnt);

        g_cntReader --;

       // 如果是最后一個

       if (g_cntReader == 0) 

       {

           JustWait(i, 1, 2, "我是最后一個讀者了!");

           printf("----------#[%d] ==> 緩沖區空閑了\n", i);

           // 解鎖文檔

           V(Sdoc);

       }

        printf("//: %d Readers Left, [%d] is out\n", g_cntReader, i);

       // 解鎖讀者計數器

        V(Scnt);

       

       // 離開

        V(Sr);

 

        JustWait(i, 5, 3, "休息了^_^  ^_^  ^_^");

    }

 

    return 0;

}

DWORD WINAPI Writer(LPVOID lpPara)

{

    // 注意是靜態變量,可以使每來一個寫者減去一,注意初值是負值

    static int g_cnt = -1; 

    int j = g_cnt --;

 

    while (1)

    {

        JustWait(j, 2, 4, "我想寫...");

       

       // 鎖定文檔

        P(Sdoc);

        printf("\t#==========[%d] <== 緩沖區已被我占用\n", -j);

 

       // 寫ing……

        JustWait(j, 4, 3, "我正在寫......");

 

        JustWait(j, 1, 2, "寫完了! ");

        printf("\t==========#[%d] ==> 緩沖區空閑了\n", -j);

 

       // 解鎖文檔

        V(Sdoc);

        JustWait(j, 8, 4, "歇息 *_* *_* *_* *_*");

    }

 

    return 0;

}


 
int main(int argc, char* argv[])


//int WINAPI WinMain(  HINSTANCE hInstance,   HINSTANCE hPrevInstance,   LPSTR lpCmdLine,   int nShowCmd )
{

    // 創建信號量      這是初值--+  +----這是最大信號量值

    //                           |  |

    Sdoc = CreateSemaphore(NULL, 1, 1, "Document");

 

    // 一次最多允許 3 個讀者讀

    Sr = CreateSemaphore(NULL, 3, 3, "ReaderNumber");

 

    // 他也是一個互斥信號量,初值為 1

    Scnt = CreateSemaphore(NULL, 1, 1, "ReaderCounterProtect");

 

    // 線程句柄

    HANDLE threads[RN+WN];

 

    // 創建讀者線程,共有 RN 個讀者

    for (int i=0; i<RN; i++)

        threads[i] = CreateThread(0, 0, Reader, 0, 0, 0);

 

    // 創建寫者線程,共有 WN 個寫者

    for (int j=0; j<WN; j++)

        threads[j+RN] = CreateThread(0, 0, Writer, 0, 0, 0);

 

    WaitForMultipleObjects(RN+WN, threads, TRUE, INFINITE);
	return 0;

}

 

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久亚洲影视婷婷| 奇米综合一区二区三区精品视频| 一个色综合网站| 奇米影视7777精品一区二区| 99久久精品国产精品久久| 欧美一区二区三区四区高清| 不卡大黄网站免费看| 欧美在线观看一区二区| 久久久五月婷婷| 午夜av一区二区三区| 99久久伊人精品| 久久久国产午夜精品| 五月天丁香久久| 色网站国产精品| 久久久99免费| 国产在线一区二区综合免费视频| 欧美日韩美少妇| 亚洲综合图片区| 99精品国产99久久久久久白柏| 精品久久久久久久久久久久包黑料| 亚洲观看高清完整版在线观看| aa级大片欧美| 国产精品欧美久久久久一区二区| 久久精品国产亚洲a| 3atv在线一区二区三区| 伊人婷婷欧美激情| 97精品视频在线观看自产线路二| 国产亚洲人成网站| 国产一区二区三区免费观看| 精品久久久久av影院| 国产美女在线观看一区| 精品区一区二区| 精品在线免费观看| 亚洲精品一区二区三区99| 蜜桃传媒麻豆第一区在线观看| 精品视频色一区| 亚洲高清免费观看| 欧美日本韩国一区二区三区视频| 亚洲小少妇裸体bbw| 欧美日韩国产高清一区| 亚洲电影一区二区| 欧美一区二区播放| 狠狠色丁香久久婷婷综合丁香| 欧美精品一区二区三区四区| 激情综合一区二区三区| 国产人成一区二区三区影院| 波多野结衣91| 夜夜嗨av一区二区三区中文字幕| 日本韩国欧美国产| 亚洲成年人影院| 精品国产青草久久久久福利| 国内精品伊人久久久久av影院| 久久精品视频免费观看| 99久久精品情趣| 亚洲福利一区二区| 日韩视频免费直播| 国产成人免费在线| 亚洲欧洲综合另类| 欧美一区二区三区在线| 国产老妇另类xxxxx| 中文字幕一区二区在线播放| 91福利精品视频| 久久99这里只有精品| 国产精品日日摸夜夜摸av| 在线日韩av片| 久久 天天综合| 中文字幕在线观看一区二区| 欧美色图在线观看| 精品亚洲porn| 亚洲欧美区自拍先锋| 91麻豆精品国产自产在线| 国产一区二三区| 亚洲激情五月婷婷| 欧美精品一区二区在线观看| 色婷婷香蕉在线一区二区| 日韩黄色小视频| 综合久久综合久久| 精品少妇一区二区三区日产乱码| 99精品欧美一区二区蜜桃免费| 免费精品视频最新在线| 亚洲人午夜精品天堂一二香蕉| 7878成人国产在线观看| 福利电影一区二区| 日韩电影免费一区| 中文字幕一区二区三区在线播放 | 亚洲午夜久久久| 精品1区2区在线观看| 欧美日韩一二区| 成人在线综合网| 精品一区二区av| 天天色天天爱天天射综合| 国产精品福利电影一区二区三区四区| 7777精品伊人久久久大香线蕉完整版| 成人av影视在线观看| 精品一区二区在线播放| 婷婷丁香激情综合| 亚洲免费资源在线播放| 中文字幕的久久| 精品国产91洋老外米糕| 日韩区在线观看| 欧美少妇bbb| 91论坛在线播放| 成人av在线播放网址| 风间由美性色一区二区三区| 久久精品久久综合| 日韩—二三区免费观看av| 亚洲成人激情自拍| 一区二区三区中文字幕在线观看| 日本一区二区久久| 欧美极品aⅴ影院| 久久久久久久国产精品影院| 精品精品国产高清a毛片牛牛| 4438成人网| 日韩欧美一区电影| 日韩午夜中文字幕| 日韩情涩欧美日韩视频| 日韩欧美电影一区| 欧美成人bangbros| 精品国产精品网麻豆系列| 精品久久久网站| 国产欧美日韩综合| 国产精品乱码一区二区三区软件| 国产精品午夜电影| 亚洲色图欧洲色图| 亚洲亚洲人成综合网络| 日韩制服丝袜av| 久久精品久久精品| 国产91精品在线观看| 99免费精品视频| 在线观看不卡一区| 欧美一区二区免费| 中文字幕一区二区三区在线观看| 一区二区三区在线高清| 午夜亚洲国产au精品一区二区| 日韩成人一级大片| 激情久久五月天| 成人av网站在线观看| 在线一区二区三区做爰视频网站| 欧美日韩激情一区二区| 日韩精品一区二区三区视频播放| 国产日韩欧美在线一区| 亚洲欧美偷拍另类a∨色屁股| 亚洲成年人影院| 国产激情一区二区三区| 91麻豆福利精品推荐| 91麻豆精品国产无毒不卡在线观看| 欧美r级在线观看| 亚洲日本青草视频在线怡红院| 午夜视频一区二区| 国产另类ts人妖一区二区| 91黄视频在线| 日韩精品一区二区三区四区视频 | 久久亚洲精精品中文字幕早川悠里| 国产欧美日韩综合精品一区二区| 亚洲精品福利视频网站| 免费成人在线视频观看| www.在线欧美| 91精品国产综合久久久蜜臀粉嫩| 国产清纯美女被跳蛋高潮一区二区久久w| 久色婷婷小香蕉久久| 成人免费视频视频在线观看免费 | 亚洲自拍都市欧美小说| 国产一区中文字幕| 在线亚洲人成电影网站色www| 日韩一二三四区| 亚洲女同一区二区| 国产一区二区久久| 欧美在线短视频| 中文字幕亚洲一区二区av在线| 日韩精品乱码av一区二区| 不卡区在线中文字幕| 日韩欧美三级在线| 亚洲一线二线三线视频| 懂色av中文一区二区三区| 欧美一级免费大片| 亚洲夂夂婷婷色拍ww47| 国产精品123| 欧美一级夜夜爽| 视频一区视频二区在线观看| 成人av影视在线观看| 久久精品网站免费观看| 美女mm1313爽爽久久久蜜臀| 欧美三级中文字幕| 亚洲色图视频网站| 成人午夜激情影院| 2欧美一区二区三区在线观看视频| 亚洲福利电影网| 欧美亚洲国产一区二区三区| 国产精品丝袜黑色高跟| 国产精品1区二区.| 久久亚洲欧美国产精品乐播| 久热成人在线视频| 日韩视频永久免费| 日韩国产精品久久久| 欧美喷水一区二区| 一区二区三区中文字幕精品精品| fc2成人免费人成在线观看播放| 国产三级精品视频| 国产乱码字幕精品高清av | 欧美午夜电影网|