青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

隨筆-3  評論-5  文章-13  trackbacks-0

--------------------------------------------------------------------------------
標題: 隊列和事件的配合使用示例
作者: 葉飛虎
日期: 2009.09.09
--------------------------------------------------------------------------------

   一個線程收到事件或消息后直接加入到隊列,而處理線程讀取隊列中的事件或消息,并
加以處理。在這個模式中,有一個線程負責寫,多個處理線程讀自己的隊列并處理。雖然看
起來象是一寫多讀,其實不然,針對某一事件隊列而言,只有一個線程是寫一個線程是讀。

隊列和事件的配合使用示例如下:

 

  1 /* 方法一: 獨立線程處理隊列 */
  2 
  3 // 線程執行體
  4 void TDealThread::Execute()
  5 {
  6    // 初始化
  7    Longword dwNo;
  8    Longword dwCount;
  9    TItem*   pItem;
 10 
 11    // 線程循環體
 12    while (!Terminated())
 13    {
 14       // 等待事件
 15       FEvent->Wait(INFINITE);
 16 
 17       // 循環處理事件項
 18       dwCount = FQueue->Count();
 19       for (dwNo = 0!Terminated() && (dwNo < dwCount); dwNo++)
 20       {
 21          pItem = (TItem*)FQueue->Pop();
 22          if (pItem != NULL)
 23          {
 24             // 處理事件項
 25             // ???  
 26 
 27             // 釋放項
 28             delete pItem;
 29          }
 30       }
 31    }
 32 }
 33 
 34 // 添加事件
 35 bool TDealThread::AddEvent(const TItem& AItem)
 36 {
 37    // 初始化
 38    bool result = false;
 39 
 40    // 判斷線程是否未終止
 41    if (!Terminated())
 42    {
 43       // 初始化
 44       TItem* pItem;
 45 
 46       // 新建項
 47       pItem  = new TItem;
 48       *pItem = AItem;
 49 
 50       // 加入隊列
 51       if (FQueue->Push(pItem))
 52       {
 53          // 事件置位
 54          FEvent->Set();
 55          result = true;
 56       }
 57       else
 58          delete pItem;
 59    }
 60 
 61    // 返回結果
 62    return result;
 63 }
 64 
 65 // 關閉線程
 66 void TDealThread::Close()
 67 {
 68    // 置終止標志
 69    Terminate();
 70    FEvent->Set();
 71 
 72    // 喚醒休眠線程
 73    if (!Finished() && Suspended())
 74       Resume();
 75 }
 76 
 77 /* 方法二: 外部線程處理 */
 78 
 79 // 外部線程取事件
 80 bool TOwnerObj::GetEvent(TItem& AItem, Longword ATimeout)
 81 {
 82    // 先取隊列項
 83    bool result = GetItem(AItem);
 84 
 85    // 判斷是否需要等待
 86    if (!result && (ATimeout != 0))
 87    {
 88       // 初始化
 89       Longword dwBegin = GetTickCount();
 90 
 91       // 循環等待事件
 92       while (GetTickCount() - dwBegin < ATimeout)
 93       {
 94          // 防止其它多線程讀取時信號取不到, 50 毫秒等待
 95          FEvent->Wait(50);
 96 
 97          // 取隊列項
 98          if (GetItem(AItem))
 99          {
100             result = true;
101             break;
102          }
103       }
104    }
105 
106    // 返回結果
107    return result;
108 }
109 
110 // 添加事件
111 bool TOwnerObj::AddEvent(const TItem& AItem)
112 {
113    // 初始化
114    bool   result = false;
115    TItem* pItem;
116 
117    // 新建項
118    pItem  = new TItem;
119    *pItem = AItem;
120 
121    // 加入隊列
122    if (FQueue->Push(pItem))
123    {
124       // 事件置位
125       FEvent->Set();
126       result = true;
127    }
128    else
129       delete pItem;
130 
131    // 返回結果
132    return result;
133 }
134 
135 // 取隊列項
136 bool TOwnerObj::GetItem(TItem& AItem)
137 {
138    // 初始化
139    TItem* pItem;
140    bool   result = false;
141 
142    // 判斷隊列是否非空
143    while (FQueue->Count() != 0)
144    {
145       pItem = (TItem*)FQueue->Pop();
146       if (pItem != NULL)
147       {
148          AItem  = *pItem;
149          result = true;
150 
151          // 釋放項
152          delete pItem;
153          break;
154       }
155    }
156 
157    // 返回結果
158    return result;
159 }
160 

 

posted on 2011-05-22 11:08 Kyee Ye 閱讀(263) 評論(0)  編輯 收藏 引用 所屬分類: 技巧雜集
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            麻豆成人小视频| 亚洲国产日韩在线| 国产精品久久久久久久久免费樱桃 | 久久精品一区二区三区四区| 亚洲一区二区三区高清| 亚洲精品视频在线播放| 亚洲精品视频一区| 亚洲一级高清| 欧美伊人久久久久久久久影院 | 亚洲国产精品一区二区久| 欧美成人国产va精品日本一级| 欧美大片在线影院| 日韩视频三区| 欧美影院在线| 免费欧美日韩| 国产精品久久久久久亚洲毛片| 国产一区日韩二区欧美三区| 亚洲国产高清自拍| 亚洲欧美日韩精品久久久| 久久久夜精品| 亚洲精品一区二区三区福利| 亚洲专区一区| 欧美国产日本韩| 国产视频综合在线| 亚洲精品你懂的| 久久av一区二区三区漫画| 亚洲福利国产精品| 午夜欧美不卡精品aaaaa| 嫩草国产精品入口| 国产日韩免费| 亚洲午夜视频在线| 欧美高清一区| 欧美在线不卡视频| 国产精品久久久久久久久| 在线观看视频一区二区| 欧美一区二区三区免费视| 亚洲激情图片小说视频| 久久久久国产精品麻豆ai换脸| 欧美三级日本三级少妇99| 黄色免费成人| 欧美在线免费视屏| 99精品国产高清一区二区| 久久先锋资源| 国模 一区 二区 三区| 亚洲一区二区三区四区中文| 亚洲高清中文字幕| 久久久精品国产免大香伊| 国产精品一区二区你懂得| 中文精品在线| 亚洲精品综合| 欧美精品久久久久久久| 91久久香蕉国产日韩欧美9色| 久久一区欧美| 亚洲欧美日韩国产| 一区二区日韩精品| 亚洲国产成人精品久久| 久久精品国产一区二区三| 国产热re99久久6国产精品| 亚洲伊人观看| 夜夜爽夜夜爽精品视频| 欧美久久电影| 99re热精品| 亚洲精品在线视频| 欧美国产先锋| 99re成人精品视频| 99re热这里只有精品免费视频| 欧美日本不卡| 亚洲网站啪啪| 亚洲一区二区av电影| 国产精品久久一卡二卡| 欧美一区二区大片| 欧美在线关看| 亚洲黄页视频免费观看| 亚洲国内精品在线| 欧美日韩伦理在线| 午夜精品福利在线| 欧美专区日韩专区| 亚洲国产精彩中文乱码av在线播放| 欧美v日韩v国产v| 欧美精品一区视频| 亚洲欧美成人一区二区在线电影| 亚洲永久字幕| 精品1区2区3区4区| 亚洲日本欧美日韩高观看| 欧美日韩精品一区| 欧美一区1区三区3区公司| 欧美在线地址| 99ri日韩精品视频| 亚洲一区二区三区四区中文| 国一区二区在线观看| 亚洲国产精品一区二区www在线| 欧美三日本三级少妇三99| 久久精品论坛| 欧美精品在线观看一区二区| 欧美一级夜夜爽| 久久综合一区| 亚洲女人小视频在线观看| 久久三级视频| 午夜国产精品视频免费体验区| 久久久久se| 亚洲欧美日韩成人| 欧美成人精品高清在线播放| 欧美一区二区免费| 欧美精品123区| 久久天天狠狠| 国产精品美女久久福利网站| 欧美激情成人在线| 国产婷婷色综合av蜜臀av| 亚洲精品乱码久久久久久黑人 | 国产精品普通话对白| 麻豆av一区二区三区久久| 欧美色欧美亚洲高清在线视频| 亚洲理论在线观看| 午夜激情一区| 欧美日韩一区二区三区在线看| 久久久久久久尹人综合网亚洲| 欧美破处大片在线视频| 老牛国产精品一区的观看方式| 国产精品激情| 亚洲精品一二三| 亚洲欧洲一区二区三区在线观看| 欧美一区二区三区免费观看 | 99re这里只有精品6| 久久香蕉国产线看观看网| 久久精品日产第一区二区| 欧美视频一区二区三区…| 亚洲成人自拍视频| 狠狠综合久久av一区二区小说| 亚洲一区二区三区激情| 在线一区二区三区四区| 欧美国产第一页| 亚洲第一黄色网| 亚洲大胆人体在线| 久久久999精品| 久久久夜色精品亚洲| 国内伊人久久久久久网站视频| 午夜精品久久久久久久蜜桃app| 亚洲欧美成人精品| 国产精品专区一| 欧美亚洲综合在线| 久久久精品日韩| 黄网动漫久久久| 久久久久久夜精品精品免费| 麻豆成人av| 亚洲三级电影在线观看| 欧美黄色成人网| 亚洲激情视频在线| 亚洲午夜视频| 国产人成精品一区二区三| 久久成人羞羞网站| 欧美aⅴ99久久黑人专区| 亚洲精品欧美一区二区三区| 欧美电影在线免费观看网站| 亚洲精品国产无天堂网2021| 亚洲一区综合| 海角社区69精品视频| 久久综合九色99| 亚洲黄色尤物视频| 亚洲综合色视频| 黄色精品免费| 欧美日韩精品是欧美日韩精品| 亚洲一区二区三区精品动漫| 久久精品一区四区| 亚洲激情婷婷| 国产精品家教| 久久久精品日韩| 亚洲最新视频在线播放| 欧美资源在线| 亚洲乱码国产乱码精品精可以看| 国产精品久久久久久久久婷婷| 久久精品二区三区| 99re6这里只有精品| 久久综合九色综合网站| 在线一区视频| 亚洲成人在线| 国产精品久久久久久妇女6080 | 蜜臀a∨国产成人精品| 99精品欧美一区二区三区综合在线| 欧美在线一级视频| 欧美大尺度在线| 欧美成人一区在线| 亚洲一二三区视频在线观看| 国产一级精品aaaaa看| 欧美精品国产一区二区| 久久国产精品亚洲77777| 日韩一二三在线视频播| 久热精品视频| 小黄鸭精品aⅴ导航网站入口| 亚洲国产专区| 国内精品福利| 国产精品久久久久久av下载红粉 | 国模 一区 二区 三区| 欧美午夜精品久久久久久久| 久久在线免费| 欧美一级视频免费在线观看| 日韩一级网站| 亚洲国产欧美一区二区三区丁香婷| 欧美一区二区三区在线免费观看| 亚洲日本欧美天堂| 一区二区三区中文在线观看 |