在本文的“更多等待...”部分中,当作者谈到与线程同步 i/o 时,他给出的第一个示例是:
hFile = CreateFile(....,FILE_IO_OVERLAPPED,...);
ReadFile(hFile,...)
< Do some computation.>
WaitForSingleObject(hFile,INFINITE);
我的印象是“CreateFile”和“ReadFile”都是同步API,不是吗?为什么这里需要一个“WaitForSingleObject”?'CreateFile' 和 'ReadFile' 不会阻塞直到操作结束然后返回?
然后,当作者谈到“警报等待”时,会出现更多的混乱。它是什么,WaitForSingleObjectEx() 之后的线程状态?那么为什么作者给出:
while (WaitForSingleObject(hObject,TRUE)==WAIT_IO_COMPLETION);
作为例子而不是
while (WaitForSingleObjectEx(hObject,TRUE)==WAIT_IO_COMPLETION);
?
并且应该将“ex”功能放在一起,例如:
hFile = CreateFile(....,FILE_IO_OVERLAPPED,...);
ReadFileEx(hFile,...)
< Do some computation.>
while (WaitForSingleObjectEx(hObject,TRUE)==WAIT_IO_COMPLETION);
任何人都可以解释一下吗?
谢谢,