异步io中用WaitforsingleOjbect是不是个有问题的设计
#include<windows.h>#include <stdio.h>int main(){#define BUFFER_SIZE 1024*1024*1024 //1GB char buf[BUFFER_SIZE]; HANDLE hfile; OVERLAPPED ol; //初始化 memset(buf,0,BUFFER_SIZE); memset(&ol,0,sizeof(ol)); hfile=CreateFile("g:\\VS2012_RC_ULT_CHS.iso", GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ|FILE_SHARE_WRITE, NULL, OPEN_EXISTING, FILE_FLAG_OVERLAPPED,NULL ); if(INVALID_HANDLE_VALUE==hfile) { printf("opend file erorr\n"); return -1; } ol.Offset=0; DWORD numRead; BOOL bRet=ReadFile(hfile,buf,BUFFER_SIZE,&numRead,&ol); if(bRet) { } else { if(ERROR_IO_PENDING==GetLastError()) //说明在读 { //难道我在这里等待吗?? 等待岂不是傻乎? WaitForSingleObject(hfile,-1); //等多久?? //查询结果 bRet=GetOverlappedResult(hfile,&ol,&numRead,TRUE); if(TRUE==bRet) //读取完毕 { } else //出错了 { } } } CloseHandle(hfile); return 0; }