91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

多線程共享數據

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

大港区| 塔城市| 宝应县| 厦门市| 花莲县| 竹溪县| 砚山县| 双城市| 驻马店市| 昭苏县| 黔西| 凤翔县| 铜川市| 黎平县| 犍为县| 抚顺县| 托克逊县| 闽清县| 紫云| 红桥区| 昌黎县| 巴中市| 深水埗区| 泌阳县| 大竹县| 道真| 久治县| 长岭县| 固安县| 乃东县| 河源市| 宝鸡市| 方正县| 友谊县| 开阳县| 托克逊县| 新余市| 阳城县| 兴和县| 江油市| 鱼台县|