WaitForSingleObject

WaitForSingleObject函数原型:
DWORD WaitForSingleObject(
  HANDLE hHandle,
  DWORD dwMilliseconds
);

参数说明:
      hHandle:是一个事件的句柄。
      dwMilliseconds:是时间间隔。如果时间内是有信号状态返回WAIT_OBJECT_0,如果时间超过dwMilliseconds值但时间事件还是无信号状态则返回WAIT_TIMEOUT。

         WaitForSingleObject函数用来检测hHandle对象的信号状态,当函数的执行时间超过dwMilliseconds就返回,但如果参数dwMilliseconds为INFINITE时函数将直到相应时间事件变成有信号状态才返回,否则就一直等待下去,直到WaitForSingleObject有返回直才执行后面的代码。

HANDLE对应的对象及这些对象状态对应的情况有:
Thread 线程:
  当线程结束时,线程对象即被激发。当线程还在进行时,则对象处于未激发状态。

Process 进程:
  当进程结束时,进程对象即被激发。当进程还在进行时,则对象处于未激发状态。

Change Notification:
  当一个特定的磁盘子目录中发生一件特别的变化时,此对象即被激发。此对象系由 FindFirstChangeNotification() 产生。

Console Input :
  当console 窗口的输入缓冲区中有数据可用时,此对象将处于激发状态。CreateFile ()和GetStdFile ()两函数可以获得console handle 。

Event 事件: 
  Event 对象的状态直接受控于应用程序所使用的三个 Win32 函数: SetEvent (), PulseEvent (), ResetEvent ()。 CreateEvent ()和 OpenEvent ()都可以传回一个 event object handle 。 Event 对象的状态也可以被操作系统设定——如果使用于“overlapped  ”操作时。当Event激活时,WaitForSingleObject将会得到一个WAIT_OBJECT_0的值。

Mutex 互斥体:
  如果mutex 没有被任何线程拥有,他就是处于激发状态。一旦一个等待mutex 的函数返回了,mutex 也就自动重置为未激发状态。CreateMutex ()和OpenMutex ()都可以获得一个 Mutext 的 handle 。

Semaphore 信号量 :
  Semaphore 有点像mutex ,但他有个计数器,可以约束其拥有者(线程)的个数。当计数器内容大于0 时, semaphore 处于激发状态,当计数器内容等于0 时,semaphore 处于未激发状态。CreateSemaphore ()和OpenSemaphore()可以传回一个semaphore handle 。

Job:
   暂时没搜到到内容。。。。。

Waitable timer计时:
   如果计时的时间间隔到达时,他就处于激活状态。CreateWaitableTimer()传回一个Waitable timer handle。SetWaitableTimer(),如果SetWaitableTimer调用时waitable timer已经在计时中,则中止前面的计时,重新开始计时。这一过程不会使 waitable timer变成singled状态。只有当定时的间隔到时,waitable timer才会变成singled状态。CancelWaitableTimer ()中止waitable time对象的计时。

posted on 2011-04-02 22:11 tiger7 阅读(1912) 评论(0)  编辑 收藏 引用 所属分类: VC


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


<2011年8月>
31123456
78910111213
14151617181920
21222324252627
28293031123
45678910

导航

统计

公告

welcome to tiger's blog.

常用链接

留言簿

文章分类

文章档案

搜索

最新评论