最近看J.J Hou译的<<Win32多线程程序设计>>和一本<<Windows环境下的多线程编程原理与应用>>一书,边看边练书上的例子,初步有了一些了解,还有若干不明白的概念,特发贴求教:1.经我试验,得出以下四条结论,不知对否?  无论是手动还是自动信号在有调用PulseEvent()的结果永远是无信号状态;
  
  无论是手动还是自动信号在有调用SetEvent()的结果永远是有信号状态  无论是手动还是自动信号在有调用ResetEvent()的结果永远是无信号状态  由以上三条可得:
     手动信号和自动信号的唯一区别即在于Sinaled之后所能响应的线程的个数?
     (前者是若干个,后者仅为一个?)2.我试验了一下,不知为何当thread1与thread2都在wait同一个mutex时都没有ReleaseMutex(),然而
  两者都能同时运行,何解?3.在J.J Hou译的<<Win32多线程程序设计>>书中有如下两段话不明白:  a.把一个const volatile变量传递给函数作为参数是合法的,如此声明意味着函数不能够
    改变变量的值,但变量的值却可被另一线程在任何时间内改掉。  b.Windows的线程是事件驱动(Event driven)模式,而且常常返回到主消息循环中。ps:感觉多线程下完全无法像单线程那样在脑子里"运行"程序了。
   有点捉摸不住 的感觉。

解决方案 »

  1.   

    更新一点:   若SetEvent( 自动对象 )之后其处于有信号状态,当且仅当一个线程被此对象激活后,则此对象即自动变为无信号状态。   以上对否???
       那如此说来,PulseEvent()主要是针对手动信号所用的。对否?
      

  2.   

    增加:  对于自动信号而言,使用SetEvent()和PulseEvent()的效果都是相同的。
      

  3.   

    推荐<windows核心编程>,它讲的实在透彻
      

  4.   

    建议搂主看看windows核心编程里面的successful wait side effects一节,以上的问题在于那些WaitFor函数是否改变事件内核对象的状态
      

  5.   

    windows 高级编程指南,出看一看.
      

  6.   

    event只是一个红绿等
    路上的车还要靠自己的眼睛来判断是否可以通行