白话手动和自动信号量的区别2010-11-20 博客园 头发又乱了讲到信号,就不得不讲到3种涉众:1.发信号者;2.传信号者;3.眼巴巴的等 着收信号的。(看官此时嘘我了,书上可没这么讲过,你瞎叨叨啥呢? )打个比方,超级大乐透摇奖开始了,全国无数财迷(哦,谢特!打拼 音的坏处就是经常出现这种情况,把彩民打成财迷了)就是第3种人,眼巴巴的 等着最后的数字,在数字没出炉前,尽管他们中有手心冒汗的,哈喇子吧嗒吧嗒 流的,眼睛红了紫、紫了绿的,但他他们都有一个共同点,那就是死,也要死在 电视机前,决不挪动半步,“等”就一个字!涉众的第2中就是电视 媒体了,它们负责传递实时的信息。第1种显然就是超级大乐透摇奖现场乐。一 旦摇出大奖,那些等着的人有的抹了抹口水该干吗干吗去了,有的擦了擦汗睡觉 去了,中大奖的准备人间蒸发了,中小奖的准备连夜上大拍档了,在农村没啥消 遣的就抱老公搂老婆上炕了,看官,您贵干去了呀?当然.WINDOWS里信 号量是不少的,有用于进程内线程同步的、有由于进程间同步的、有临界资源互 斥访问同步的,今天,现在,咱只讨论事件信号。先参考平台SDK里的函数,仅 供参考,不看也罢。当然,给看官你带来的损失也罢,哈哈!The CreateEvent function creates or opens a named or unnamed event object.HANDLE CreateEvent(
LPSECURITY_ATTRIBUTES lpEventAttributes,
BOOL bManualReset,
BOOL bInitialState,
LPCTSTR lpName
);
The SetEvent function sets the specified event object to the signaled state.BOOL SetEvent(
HANDLE hEvent
);
The ResetEvent function sets the specified event object to the nonsignaled state.BOOL ResetEvent(
HANDLE hEvent
);
The WaitForSingleObject function returns when the specified object is in the signaled state or the time-out interval elapses.To enter an alertable wait state, use the WaitForSingleObjectEx function.To wait for multiple objects, use the WaitForMultipleObjects.DWORD WaitForSingleObject(
HANDLE hHandle,
DWORD dwMilliseconds
);