如果有与休眠并行的操作,比如下面程序中对ret赋值,那么这个并行的操作在什么时候被执行呢?而且,执行SuspendThread后,线程是立刻进入休眠的么?如果这么做(在线程内休眠自己,在线程外重新启动),有没有什么副作用?谢谢各位。#include <windows.h>
#include <iostream>using std::cin;
using std::cout;
using std::endl;DWORD ret = -1;
HANDLE threadHandle = 0;DWORD WINAPI ThreadProc(LPVOID lpParam)
{
::Sleep(500);
cout<<"123"<<endl;
DWORD ret = ::SuspendThread(threadHandle);//程序运行到这里时,会休眠自己,那么ret会在什么时候被赋值呢?休眠前还是休眠后?为什么?
while(1)
cout<<"abc"<<endl;
return 0;
}int _tmain(int argc, _TCHAR* argv[])
{
DWORD a;
threadHandle = ::CreateThread(NULL, 0, ThreadProc, 0, 0, &a);
::Sleep(1000);
::Sleep(1000);
a = ::ResumeThread(threadHandle);
::Sleep(1000);
return 0;
}
#include <iostream>using std::cin;
using std::cout;
using std::endl;DWORD ret = -1;
HANDLE threadHandle = 0;DWORD WINAPI ThreadProc(LPVOID lpParam)
{
::Sleep(500);
cout<<"123"<<endl;
DWORD ret = ::SuspendThread(threadHandle);//程序运行到这里时,会休眠自己,那么ret会在什么时候被赋值呢?休眠前还是休眠后?为什么?
while(1)
cout<<"abc"<<endl;
return 0;
}int _tmain(int argc, _TCHAR* argv[])
{
DWORD a;
threadHandle = ::CreateThread(NULL, 0, ThreadProc, 0, 0, &a);
::Sleep(1000);
::Sleep(1000);
a = ::ResumeThread(threadHandle);
::Sleep(1000);
return 0;
}
2 http://msdn.microsoft.com/library/chs/default.asp?url=/library/CHS/vcsample/html/vcsamCThreadPoolSample.asp