Windows 核心编程 这里是不是讲的有有关问题呀?至少是不严谨

Windows 核心编程 这里是不是讲的有问题呀?至少是不严谨
核心编程第9章讲到:it's important to note that WaitForMultipleObjects works atomically. When it checks the state of the kernel objects, no other thread can alter any object's state behind its back. This prevents deadlock situations. Imagine what would happen if one thread saw that hAuto-ResetEvent1 was signaled and reset the event to nonsignaled, and then the other thread saw that hAutoResetEvent2 was signaled and reset this event to nonsignaled. Both threads would be frozen: one thread would wait for an object that another thread had gotten, and vice versa. WaitFor-MultipleObjects ensures that this never happens.
说WaitForMultipleObjects是以原子方式工作的,当它检查内核对象的状态时,没有其他线程能在背后改变对象的状态。
这和MSDN里的说法似乎是矛盾的:
When bWaitAll is TRUE, the function's wait operation is completed only when the states of all objects have been set to signaled. The function does not modify the states of the specified objects until the states of all objects have been set to signaled. For example, a mutex can be signaled, but the thread does not get ownership until the states of the other objects are also set to signaled. In the meantime, some other thread may get ownership of the mutex, thereby setting its state to nonsignaled.
个人觉得Jeffrey可能没表达清楚他的意思,MSDN在这里说的没问题。等待函数工作的时候,不可能不允许别的线程SetEvent吧?
不知各位大神有何高见?
线程 同步

------解决方案--------------------
这家伙好象自己啥都懂。但真不知道他有没有实验过。
------解决方案--------------------
如果别的线程不能更改,wait线程又挂起等待,那不over了。

------解决方案--------------------