<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    DANCE WITH JAVA

    開發出高質量的系統

    常用鏈接

    統計

    積分與排名

    好友之家

    最新評論

    互斥

    互斥的幾種實現方式:
    一,忙等待互斥
    1,禁止中斷
    2,鎖變量
    3,嚴格的輪換
    4,peterson算法
    5,Tsl
    忙等待存在著各種各樣的問題,一個最大的問題使消耗cpu,另外容器產生各種錯誤。而且還可能出現優先級反轉問題,所以忙等待并不是很好的辦法

    ?互斥2-生產者消費者(原始狀態)

    一,休眠與喚醒
    1,經典的生產者與消費者問題
    生產者消費者現象的原型是這樣的:
    一個生產者生產,當緩沖區滿了,就自己休眠
    一個消費者消費,當緩沖區空了,就自己休眠

    一個生產者生產,當生產一個產品時,就喚醒消費者(可以消費了)
    一個消費者消費,當消費一個產品時,就喚醒生產者(可以生產了)

    無論是生產者,還是消費著,當被喚醒的時候不一定馬上執行,還需要獲得cpu

    ◎這種設計產生了一個問題,原因是需要一個count來記錄產品個數,而count的獲得并沒有互斥
    例如如下情況:
    消費者取得count=0,但是還沒來得及休眠自己的時候,發生了系統進程調度,切換到生產者
    生產者生產了一個產品后,喚醒消費者,但是這個時候的消費者并沒有休眠,所以喚醒丟失
    然后生產者繼續生產,直到緩沖滿了,自動休眠。
    但是這個時候的消費者也是休眠狀態,沒有人來喚醒他,所以兩個都一直休眠下去。

    解決方案:
    提供一個標志位,當生產者發送喚醒給消費者的時候,記錄下來為1,當消費者要休眠之前檢查一下這個標志位,如果是1就不休眠,如果不是就休眠
    這個方法暫時解決了問題,考慮一下。
    如果是m個生產者,n個消費者,m,n又很大的情況下,標志位就太多了。
    這種情況下情況下地解決辦法見下一篇文章 <互斥3-生產者消費者>

    這個方案地實現程序如下:
    #define N=100
    int count=0;
    void product(void){
    ?int item;
    ?while(TRUE){
    ??item=produce_item()
    ??if(count==N)sleep();
    ??insert_item(item);
    ??count=count+1;
    ??if (count==1)wakeup(consumer);
    ?}
    }
    void consumer(void){
    ?int item;
    ?while(TRUE){
    ??if(count==0)sleep();
    ??item=remove_item();
    ??count=count-1;
    ??if(count==N-1)wakeup(product);
    ??consume_item(item);
    ?}
    }?


    posted on 2006-09-20 21:32 dreamstone 閱讀(523) 評論(0)  編輯  收藏 所屬分類: 基礎

    主站蜘蛛池模板: 亚洲午夜无码毛片av久久京东热| 亚洲国产二区三区久久| 中文字幕乱码亚洲精品一区| 免费精品无码AV片在线观看| 久久久无码精品亚洲日韩蜜桃| 精品久久久久久国产免费了| 国产亚洲精久久久久久无码AV| 又黄又大的激情视频在线观看免费视频社区在线 | 久久国产乱子精品免费女 | 亚洲一区二区三区四区在线观看 | 亚洲国产欧美国产综合一区| 毛片免费在线播放| 国产成人精品日本亚洲专区6| 最近免费中文字幕大全视频| 亚洲成在人线aⅴ免费毛片| 国产一级理论免费版| 一区二区三区视频免费观看| 亚洲午夜久久久久久久久电影网| 你是我的城池营垒免费看| 久久亚洲国产视频| 国产成人精品免费视| 亚洲日产乱码一二三区别| 四虎永久免费观看| 男女一边桶一边摸一边脱视频免费| 亚洲精品国产字幕久久不卡| 91精品国产免费入口| 亚洲欧美日韩中文字幕一区二区三区| 四虎永久成人免费| 国产无遮挡裸体免费视频在线观看| 亚洲精品韩国美女在线| 好爽又高潮了毛片免费下载| 免费看黄网站在线看| 亚洲高清在线播放| 免费观看的av毛片的网站| 久久av免费天堂小草播放| 亚洲日本在线免费观看| 亚洲AV无码一区二区三区国产| 国产精品99精品久久免费| 亚洲中文字幕无码中文字| 亚洲中文字幕久久精品无码APP| 999在线视频精品免费播放观看|