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