完成端口中,取得完成通知的线程中,一般的处理过程是这样的!DWORD WINAPI ThreadName(LPVOID lParam)
{
HANDLE hCompletion=(HANDLE)lParam;
DWORD dwTrans=0;
PPER_HANDLE_DATA pPer_Handle_Data=NULL;
PPER_IO_DATA pPer_IO_Data=NULL;
        //这里定义一个变量
        int ival=10;
while (TRUE)
{
int bOk=GetQueuedCompletionStatus(hCompletion,&dwTrans,(LPDWORD)&pPer_Handle_Data,(LPOVERLAPPED*)&pPer_IO_Data,INFINITE);
......
        switch(...)
        case 1:
        //可以肯定的是case1执行过后, case2才执行
        //case1中修改ival的值
        ival=9;
        ....
        break;        case 2:
        //输出ival的值
        cout<<ival<<endl;
        .....
        break;

        }}问题是,当在case1中修改了ival的值(case1执行过后,case2才执行,第一次GetQueuedCompletionStatus的结果去执行case1,第二次GetQueuedCompletionStatus去执行case2),但是在case2中,ival的值又变成了10.不知道这个是什么原因?!