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

我的玻璃盒子

(轉(zhuǎn)帖)Windows同步API (二)—— Event

原文鏈接:http://m.shnenglu.com/wangjt/archive/2008/02/01/42312.html

  Event即事件是一種用于進行線程/進程間同步的對象,事件有置位和復(fù)位兩種狀態(tài),當線程通過waiting functions等待Event對象置位時該線程將進入阻塞狀態(tài),當該Event對象被置位或等待超時后,等待的線程將恢復(fù)執(zhí)行。Event可以用在一個線程要等待其它線程時。
可以使用CreateEvent創(chuàng)建Event對象
HANDLE WINAPI CreateEvent(
    LPSECURITY_ATTRIBUTES lpEventAttributes,
    BOOL bManualReset,
    BOOL bInitialState,
    LPCTSTR lpName
);
lpEventAttributes用于指定Event對象的安全屬性,包括句柄是否可被子進程繼承和對象的安全描述符。可設(shè)置NULL取默認安全屬性。
bManualReset表明Event對象是否需要手動復(fù)位。如果該參數(shù)為TRUE,則Event對象需要通過ResetEvent函數(shù)手動復(fù)位。如果該參數(shù)為FALSE,則Event被創(chuàng)建為自動復(fù)位的Event,任何等待的線程被恢復(fù)執(zhí)行后,該Event將被系統(tǒng)自動復(fù)位。打個比方,如果有10個線程在等待一個Event,這時將Event置位,如果這是個手動復(fù)位Event,那么這10個線程將被依次喚醒直到通過ResetEvent調(diào)用將該Event復(fù)位;如果Event為自動復(fù)位Event,那么10個線程中的第一個被喚醒后Event被自動復(fù)位,其它線程將繼續(xù)等待。
bInitialState參數(shù)表明Event對象被創(chuàng)建后默認是否置位。
lpName參數(shù)是Event的名字,可以為空表明將創(chuàng)建匿名Event。
CreateEvent函數(shù)在調(diào)用成功后返回Event句柄。如果同名Event已經(jīng)存在,則返回這個已經(jīng)存在了的Event的句柄,此時調(diào)用GetLastError函數(shù)將返回 ERROR_ALREADY_EXISTS。
還可以通過OpenEvent打開一個已經(jīng)創(chuàng)建的非匿名Event
HANDLE WINAPI OpenEvent(
    DWORD dwDesiredAccess,
    BOOL bInheritHandle,
    LPCTSTR lpName
);
在創(chuàng)建或打開了Event對象之后,可以使用SetEvent和ResetEvent函數(shù)來置位或復(fù)位一個Event對象。
BOOL WINAPI SetEvent(
    HANDLE hEvent
);
BOOL WINAPI ResetEvent(
    HANDLE hEvent
);
要等待一個或多個Event對象置位可以使用wait functions。
簡單示例,一個線程不停讀取用戶輸入并放入message列表,另一個線程模擬將message發(fā)送出去,如果沒有消息,則發(fā)送線程處于阻塞狀態(tài)等待,一旦有消息錄入,輸入線程將event置位,發(fā)送線程即被激活并逐個發(fā)送消息。
#include "stdafx.h"
#include <windows.h>
#include <tchar.h>
#include <iostream>
#include <list>
#include <string>
using namespace std;

#ifdef _UNICODE
typedef wstring tstring;
#define tcout wcout
#define tcin wcin
#else
typedef string tstring;
#define tcout cout
#define tcin cin
#endif /* _UNICODE */

typedef list<tstring> StringList;

HANDLE hMutex = NULL;
HANDLE hEvent = NULL;
HANDLE hSendThread = NULL;
StringList messages;

bool isRunning;

DWORD WINAPI SendThreadProc(LPVOID lpThreadParameter)
{
DWORD dw;
while(isRunning)
{
  dw = WaitForSingleObject(hEvent, INFINITE);
  if(dw != WAIT_OBJECT_0)
  {
   tcout << _T("Wait error.") << endl;
   return -1;
  }
  dw = WaitForSingleObject(hMutex, INFINITE);
  if(WAIT_OBJECT_0 != dw && WAIT_ABANDONED != dw)
  {
   tcout << _T("Wait error.") << endl;
   return -2;
  }

  StringList list(messages);
  messages.clear();

  ReleaseMutex(hMutex);

  for(StringList::iterator i = list.begin(); i != list.end(); i++)
  {
   Sleep(1000); //休眠1秒模擬發(fā)送所耗時間

   tcout << _T("/* Send Message:") << *i << _T(" */");
  }

}

return 0;
}

int _tmain(int argc, _TCHAR* argv[])
{
hMutex = CreateMutex(NULL, FALSE, NULL);
hEvent = CreateEvent(NULL, FALSE, FALSE, NULL);
isRunning = true;

hSendThread = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)SendThreadProc, NULL, 0, NULL);

while(isRunning)
{
  tstring s;
  tcin >> s;
  if(s == _T("quit"))
  {
   isRunning = true;
   break;
  }

  DWORD dw = WaitForSingleObject(hMutex, INFINITE);
  if(WAIT_OBJECT_0 != dw && WAIT_ABANDONED != dw)
  {
   tcout << _T("Wait error.") << endl;
   return -1;
  }
  messages.push_back(s);
  ReleaseMutex(hMutex);
  SetEvent(hEvent);
}

CloseHandle(hMutex);
CloseHandle(hEvent);
CloseHandle(hSendThread);

return 0;

}

posted on 2008-02-03 10:44 深藍色系統(tǒng) 閱讀(597) 評論(0)  編輯 收藏 引用 所屬分類: Windows開發(fā)

導(dǎo)航

<2008年1月>
303112345
6789101112
13141516171819
20212223242526
272829303112
3456789

統(tǒng)計

常用鏈接

留言簿(75)

隨筆分類

隨筆檔案

文章分類

文章檔案

搜索

最新評論

閱讀排行榜

評論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            欧美成人精品h版在线观看| 一区二区三区久久久| 蜜桃久久av| 久久er精品视频| 久久精品国产亚洲aⅴ| 久久九九国产精品| 久久久99免费视频| 欧美暴力喷水在线| 欧美日韩一区二区国产| 国产精品欧美久久久久无广告| 欧美视频日韩视频| 国产一区二区三区观看| 在线看片日韩| 亚洲图片激情小说| 久久久蜜臀国产一区二区| 免费观看成人www动漫视频| 亚洲激情av在线| 亚洲成人在线网| 亚洲欧美综合精品久久成人| 亚洲一级电影| 久久精品一区蜜桃臀影院| 麻豆91精品| 国产精品久久毛片a| 激情欧美一区| 一区二区不卡在线视频 午夜欧美不卡'| 在线一区二区日韩| 久久久久久久91| 亚洲国产精品毛片| 久久精品人人做人人爽| 欧美午夜免费电影| 亚洲高清在线精品| 羞羞答答国产精品www一本| 欧美成人免费在线| 亚洲欧美在线看| 欧美精品在线观看播放| 国产亚洲成精品久久| 日韩亚洲视频| 麻豆91精品| 午夜精品亚洲| 欧美日韩一区二区三| 亚洲国产成人精品女人久久久| 香蕉国产精品偷在线观看不卡| 亚洲福利电影| 久久久999成人| 国内精品久久久久久| 亚洲欧美日韩中文播放| 亚洲欧洲综合另类| 久久综合九色综合欧美就去吻| 国产精品视频免费一区| 中日韩美女免费视频网址在线观看| 欧美高清视频在线播放| 久久青草久久| 激情欧美一区二区三区在线观看| 午夜在线成人av| 一区二区三区视频在线播放| 欧美成人在线免费观看| 在线日韩av永久免费观看| 久久成人免费日本黄色| 亚洲免费视频成人| 国产欧美一区二区精品仙草咪 | 亚洲国产视频直播| 欧美一区二区三区在| 国产精品香蕉在线观看| 亚洲综合国产| 欧美亚洲自偷自偷| 在线播放一区| 欧美国产日本| 欧美国产日本在线| 一区二区三区日韩欧美| 洋洋av久久久久久久一区| 欧美日韩精品一区二区三区四区 | 国产区日韩欧美| 国产色视频一区| 国产精品高潮视频| 亚洲一区免费观看| 午夜精品av| 在线成人性视频| 亚洲国产精品一区二区www| 欧美岛国在线观看| 中文一区字幕| 亚洲一二三区精品| 国产精品一区二区你懂得| 久久婷婷国产综合精品青草| 久久野战av| 一本久道久久综合狠狠爱| 亚洲一级黄色| 亚洲国产一区二区三区a毛片| 91久久精品国产91性色tv| 国产精品免费视频xxxx| 另类av导航| 欧美日韩中文| 老司机精品久久| 欧美午夜精品久久久久久超碰| 久久久av毛片精品| 欧美激情综合网| 欧美专区亚洲专区| 欧美韩国在线| 欧美在线资源| 欧美日韩极品在线观看一区| 欧美一区二区视频观看视频| 久久网站免费| 欧美在线二区| 欧美日韩一区二区三区在线视频| 久久久久欧美精品| 欧美日韩18| 免费久久99精品国产自| 国产精品美女在线观看| 亚洲国产精品久久人人爱蜜臀 | 国产精品视频精品| 亚洲人成毛片在线播放女女| 国产日韩欧美一区二区| 亚洲精品亚洲人成人网| 136国产福利精品导航| 亚洲免费一区二区| 亚洲小说欧美另类婷婷| 久久综合亚洲社区| 欧美一级免费视频| 欧美体内she精视频| 欧美高清hd18日本| 黄色成人在线| 欧美中文字幕在线播放| 午夜精品一区二区三区电影天堂| 欧美黄色免费| 欧美激情视频一区二区三区不卡| 国产伪娘ts一区| 好看不卡的中文字幕| 亚洲欧美国产另类| 欧美一级成年大片在线观看| 欧美视频1区| 99国产精品国产精品毛片| 日韩视频一区二区三区| 欧美国产在线观看| 最新精品在线| 久久精品二区亚洲w码| 99在线|亚洲一区二区| 亚洲国产一区二区视频| 久久久久久久久一区二区| 久久精品视频在线免费观看| 国产精品天天摸av网| 亚洲天堂av在线免费| aa级大片欧美| 欧美日韩视频在线观看一区二区三区| 欧美不卡激情三级在线观看| 国产三级欧美三级日产三级99| 午夜国产精品影院在线观看| 久久99伊人| 韩日视频一区| 久久亚洲私人国产精品va媚药| 免费看成人av| 日韩特黄影片| 国产精品成人在线观看| 亚洲综合视频一区| 美女91精品| 日韩网站在线看片你懂的| 欧美日韩三区| 欧美一级淫片播放口| 欧美成人在线影院| 一本色道久久综合一区| 欧美性事免费在线观看| 欧美一区二区观看视频| 嫩模写真一区二区三区三州| 亚洲激情一区二区| 欧美视频一区二区在线观看 | 久热国产精品视频| 91久久午夜| 国产精品免费在线| 欧美自拍偷拍午夜视频| 亚洲高清一区二区三区| 亚洲欧美另类在线| 亚洲电影毛片| 国产精品国产自产拍高清av王其| 亚洲欧美日韩国产综合在线| 免费亚洲婷婷| 午夜久久一区| 亚洲黄色免费网站| 国产九区一区在线| 欧美ed2k| 欧美在线视频在线播放完整版免费观看| 欧美成人四级电影| 香蕉乱码成人久久天堂爱免费| 亚洲高清资源综合久久精品| 国产精品久久久久久久久久三级 | 久久久噜噜噜久噜久久| 99国产精品国产精品毛片| 国产精品一区亚洲| 欧美日韩福利在线观看| 性视频1819p久久| a4yy欧美一区二区三区| 美女国产精品| 亚洲欧美日韩直播| 一本久久综合| 亚洲日产国产精品| 狠狠久久亚洲欧美| 国产精品久99| 欧美性色视频在线| 欧美三级视频在线| 欧美日本亚洲韩国国产| 你懂的视频欧美| 美女在线一区二区| 久久嫩草精品久久久精品一|