并不是只要调用了Resume()线程就能继续执行,这个函数执行的效果根据该线程的暂停计数(suspend count)来确定.
每个线程都有一个暂停计数(最大MAXIMUM_SUSPEND_COUNT),如果一个线程的暂停计数大于0,那么线程就会被暂停,否则不会被暂停,并且为可执行状态.
-------------------------------------------------------
Resume()方法内部调用了ResumeThread,它返回当前的暂停计数.
DWORD ResumeThread(
HANDLE hThread
);
ResumeThread会检查这个计数的值,如果是0,此线程不会被暂停.否则将其减少1,如果减少后计数是0 了,线程就会被继续执行.
返回值:
如果返回0,该线程不会被暂停.
返回1,线程不会被暂停,但是被重新开始.
返回值大于1,线程会被继续暂停.
------------------------------------------------------
Suspend()方法内部调用了SuspendThread;
该函数将使得线程被暂停,并且其暂停计数增加1.并返回当前的暂停计数.