亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

多線程共享數據

發布時間:2020-04-29 12:22:01 來源:網絡 閱讀:434 作者:lingftgy 欄目:編程語言

線程間的數據共享

     多個線程共享數據, A線程生產物品,產品數量增加,B線程使用,那么產品數量減少,B線程如何知道產品buf是否為空呢?A線程如何判斷產品buf為滿?
1 輪詢機制
      線程每隔一定時間檢查緩沖區,如果有產品就取出,這種機制需要控制好輪詢間隔,查詢太頻繁會導致占用cpu過多,浪費;查詢太不頻繁導致緩沖區滿,生產者放不進去產品
  int buf[MAX];
  int ProductionCount;
  while(1)
  {
  Msleep(100);
     if(ProductionCount > 0)
       {
        use it;
     ProductionCount --;
    }
  }
 2,信號量機制
      信號量和線程,互斥鎖等一樣,是操作系統提供的功能
   對于上述問題,可以創建一個信號量對象,生產線程每次生產完可以調用post使得信號量+1,消費只調用wait函數;使信號量減1,如果信號量為0,消費線程會等待,,
   Semaphore sem(0);
   A線程
       while(1)
    {
        ...
     sem.post();
    }
     B線程
      while(1)
   {
       ....
    sem.wait();      //如果信號量為0,那么會等待,
   }
 超時等待
 int res = sem。wait(1000); //ms
 if( res != 0)
    。。。。。;
 如果等待超過 1000秒,那么res返回 !0,可以執行某些操作。。
 



 


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

通榆县| 北票市| 武平县| 礼泉县| 金平| 图们市| 河北区| 凤庆县| 米脂县| 资源县| 肥乡县| 延边| 德钦县| 丰镇市| 鹤壁市| 开阳县| 房产| 鄂托克前旗| 平利县| 凉城县| 扶绥县| 榆社县| 宜宾县| 灵石县| 新建县| 汶川县| 定南县| 砀山县| 乌拉特前旗| 巴彦淖尔市| 淮北市| 襄汾县| 融水| 大新县| 寻乌县| 定兴县| 阳江市| 神池县| 电白县| 霍林郭勒市| 阳山县|