中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

多線程共享數據

發布時間: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

成都市| 舞阳县| 武川县| 寻乌县| 绥宁县| 洪洞县| 桃源县| 台东市| 寿光市| 汝城县| 镇康县| 宝应县| 泸溪县| 彝良县| 白水县| 板桥市| 云林县| 万山特区| 霸州市| 池州市| 神农架林区| 芮城县| 雷山县| 嘉峪关市| 华宁县| 泸溪县| 当涂县| 徐水县| 满城县| 射洪县| 图们市| 隆德县| 辉县市| 吴堡县| 穆棱市| 隆昌县| 原平市| 兰溪市| 莱西市| 珠海市| 犍为县|