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

隨筆-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 閱讀(268) 評論(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>
            蜜臀91精品一区二区三区| 欧美高清一区二区| 欧美视频一区二区三区在线观看| 欧美久久久久久久久| 国产视频自拍一区| 国产精品一区在线观看你懂的| 亚洲精品一二| 亚洲午夜视频在线观看| 欧美电影免费| 久久久亚洲综合| 国内精品国语自产拍在线观看| 久久精品人人爽| 国产精品美女xx| 永久域名在线精品| 久久国产精品亚洲va麻豆| 久久天天躁狠狠躁夜夜av| 日韩午夜在线电影| 樱花yy私人影院亚洲| 欧美成人午夜剧场免费观看| 欧美电影免费观看| 欧美三日本三级少妇三2023| 亚洲伦理一区| 一级日韩一区在线观看| 欧美11—12娇小xxxx| 亚洲欧美国产精品桃花| 亚洲伊人色欲综合网| 欧美在线观看一二区| 亚洲免费影视第一页| 亚洲国产合集| 欧美在线播放高清精品| 欧美国产三区| 亚洲中字在线| 久久久久一区二区三区| 一区二区三区www| 欧美性色aⅴ视频一区日韩精品| 欧美精品黄色| 亚洲欧美国产日韩天堂区| 国产精品vvv| 欧美v日韩v国产v| 久久精品免费观看| av成人动漫| 最新成人在线| 亚洲欧美激情一区二区| 亚洲电影下载| 免费亚洲一区| 亚洲一二三区精品| 激情久久久久| 在线视频亚洲| 久久精品国产清高在天天线| 午夜国产精品视频| 亚洲免费观看视频| 国产精品自拍三区| 亚洲一区二区三区精品视频 | 亚洲欧美在线看| 欧美电影在线观看完整版| 国产亚洲视频在线观看| 亚洲一区二区三区四区五区黄| 亚洲第一搞黄网站| 亚洲欧美日韩综合| 国产精品自在欧美一区| 亚洲欧美怡红院| 亚洲少妇诱惑| 国产精品乱人伦中文| 中文无字幕一区二区三区| 亚洲成色777777女色窝| 久久久久久9999| 国产综合在线看| 久久久青草青青国产亚洲免观| 亚洲嫩草精品久久| 国产在线乱码一区二区三区| 久久天堂成人| 欧美成人小视频| 一本色道久久综合亚洲精品按摩| 亚洲国产成人精品久久| 欧美黄色aaaa| 亚洲一区二区三区四区五区午夜| 亚洲无玛一区| 国内外成人免费视频| 久久女同互慰一区二区三区| 久久久久女教师免费一区| 一区免费视频| 亚洲黄色免费| 国产精品福利网| 欧美一区二区久久久| 欧美一级午夜免费电影| 在线看片日韩| 一二三四社区欧美黄| 国产亚洲欧美日韩美女| 你懂的国产精品| 欧美激情一区二区在线 | 亚洲精品一区二区网址 | 久久综合一区| 久久天天综合| 亚洲性线免费观看视频成熟| 久久综合狠狠综合久久综青草| 国产欧美91| 久久精品盗摄| 欧美xxxx在线观看| 亚洲自拍高清| 久久久久一区二区三区| 亚洲香蕉在线观看| 久久九九国产精品怡红院| 日韩一级视频免费观看在线| 亚洲伊人网站| 亚洲国产专区| 亚洲欧美日韩中文播放| 亚洲日本精品国产第一区| 亚洲视频欧美视频| 亚洲国产精品va在线看黑人动漫| 日韩一级黄色av| 激情六月综合| 亚洲免费在线精品一区| 亚洲精品视频在线| 久久国产日韩| 午夜精品久久| 欧美日韩国语| 欧美国产日韩一区二区三区| 国产精品性做久久久久久| 亚洲国产成人tv| 激情欧美日韩| 亚洲欧美日韩爽爽影院| 夜夜精品视频| 免费观看日韩av| 久久久久成人精品| 国产精品久久久久久久久免费桃花| 欧美大片18| 国模叶桐国产精品一区| 亚洲尤物视频在线| 亚洲男人的天堂在线| 欧美人成在线| 欧美国产日本在线| 在线精品国产欧美| 久久久水蜜桃| 久久久久在线观看| 国产一区二区日韩精品| 亚洲欧美日韩综合| 久久精品二区三区| 国产精品一二三四区| 日韩一级大片| 亚洲欧美日韩天堂一区二区| 欧美日韩一区二区三区在线看| 亚洲高清激情| 日韩视频在线观看免费| 欧美国产国产综合| 亚洲日本电影在线| 一本色道**综合亚洲精品蜜桃冫 | 欧美一区二区三区免费观看视频| 亚洲午夜精品网| 欧美午夜视频网站| 在线亚洲电影| 欧美一站二站| 国模叶桐国产精品一区| 久久久久久午夜| 亚洲第一久久影院| av不卡在线观看| 国产精品你懂的| 久久国产色av| 亚洲片在线观看| 中文精品一区二区三区| 欧美手机在线视频| 亚洲第一天堂av| 亚洲欧洲日产国产网站| 亚洲精品1区2区| 欧美激情在线免费观看| 亚洲视频在线二区| 久久久亚洲一区| 一区二区电影免费观看| 国产精品一区视频| 久久久蜜桃精品| 亚洲另类视频| 久久久一本精品99久久精品66| 在线免费高清一区二区三区| 欧美激情一二区| 亚洲一区二区免费看| 久久久成人精品| 日韩视频免费观看| 国产欧美午夜| 模特精品在线| 亚洲综合好骚| 亚洲欧洲精品一区| 久久精品中文字幕免费mv| 最新日韩精品| 国产精品一卡二| 欧美精品色综合| 久久久久国产一区二区三区四区| 亚洲人成欧美中文字幕| 久久精品国产第一区二区三区最新章节| 亚洲成人在线视频网站| 国产精品大片免费观看| 久久天天狠狠| 性欧美暴力猛交另类hd| 亚洲卡通欧美制服中文| 老司机免费视频一区二区| 亚洲影院在线观看| 亚洲欧洲精品一区二区| 国产自产v一区二区三区c| 欧美亚洲第一页| 欧美日韩播放| 欧美成人蜜桃| 久久久亚洲国产美女国产盗摄|