本人在学习线程方面的知识时,遇到了一个问题
不知道
Cevent类用法

WaitForSingleObject更不知道是什么东西,请各位仁兄帮忙!
在此谢谢!!!

解决方案 »

  1.   

    详细地看看MSDN吧.这个东西一句话不见得说得清楚.
      

  2.   

    CEvent 事件类;通常用于线程同步
    等待一个对像结束。通常用于线程同步;如果参数所标识的内核对象没有结束,则进入等待状态
      

  3.   

    等待一个对象发信号而已,,,
    拥有这个信号后,才可以执行WaitForSingleObject()之后的语句。
    任何一本多线程的书上都有这个函数的说明,
      

  4.   

    简单说来WaitForSingleObject函数和SetEvent函数配合使用是最经常遇到的情况,WaitForSingleObject的参数之一是一个Windows核心对象,它可以是事件,互斥区,进程,线程等等。当一个核心对象的状态发生改变的时候WaitForSingleObject函数就会返回,要不然这个函数会一直阻塞下去。利用这个函数对于多线程程序中的线程同步具有很大的意义。不过具体的情况还是建议你要参考MSDN,这个东西真的不是一两句话可以解释清楚的
      

  5.   

    曾分~~~
    等待函数可使线程自愿进入等待状态,直到一个特定的内核对象变为已通知状态为止。这
    些等待函数中最常用的是Wa i t F o r S i n g l e O b j e c t :
        当线程调用该函数时,第一个参数h O b j e c t标识一个能够支持被通知/未通知的内核对象
    (前面列出的任何一种对象都适用)。第二个参数d w M i l l i s e c o n d s允许该线程指明,为了等待该对象变为已通知状态,它将等待多长时间。调用下面这个函数将告诉系统,调用函数准备等待到h P r o c e s s句柄标识的进程终止运行为止:
    WaitForSingleObject(hProcess,INFINITE)
        第二个参数告诉系统,调用线程愿意永远等待下去(无限时间量),直到该进程终止运行。
    通常情况下, I N F I N I T E是作为第二个参数传递给Wa i t F o r S i n g l e O b j e c t的,不过也可以传递任何一个值(以毫秒计算)。顺便说一下, I N F I N I T E已经定义为0 x F F F F F F F F(或-1)。当然,传递I N F I N I T E有些危险。如果对象永远不变为已通知状态,那么调用线程永远不会被唤醒,它将永远处于死锁状态,不过,它不会浪费宝贵的C P U时间。下面是如何用一个超时值而不是I N F I N I T E来调用Wa i t F o r S i n g l e O b j e c t的例子:DWORD dw = WaitForSingleObject(hProcess,5000);
    switch(dw)
    {
       case WAIT_OBJECT_0:
                //The process terminated
            break;
       case WAIT_TIMEOUT:
                //The process did not terminated within 5000 milliseconds
            break;
       case WAIT_FAILED:
               //Bad call to function(Invalid handle?)
            break;
    }
      上面这个代码告诉系统,在特定的进程终止运行之前,或者在5 0 0 0 m s时间结束之前,调
    用线程不应该变为可调度状态。因此,如果进程终止运行,那么这个函数调用将在不到
    5 0 0 0 m s的时间内返回,如果进程尚未终止运行,那么它在大约5 0 0 0 m s时间内返回。注意,不能为d w M i l l i s e c o n d传递0。如果传递了0,Wa i t F o r S i n g l e O b j e c t函数将总是立即返回。Wa i t F o r S i n g l e O b j e c t的返回值能够指明调用线程为什么再次变为可调度状态。如果线程等待的对象变为已通知状态,那么返回值是WA I T _ O B J E C T _ 0。如果设置的超时已经到期,则返回值是WA I T _ T I M E O U T。如果将一个错误的值(如一个无效句柄)传递给Wa i t F o r S i n g l eO b j e c t,那么返回值将是WA I T _ FA I L E D.