关于TThread类的Suspend()方法和Resume()方法.

来源:互联网 发布:win7网络红叉不能上网 编辑:程序博客网 时间:2024/06/14 07:46

    并不是只要调用了Resume()线程就能继续执行,这个函数执行的效果根据该线程的暂停计数(suspend count)来确定.
    每个线程都有一个暂停计数(最大MAXIMUM_SUSPEND_COUNT),如果一个线程的暂停计数大于0,那么线程就会被暂停,否则不会被暂停,并且为可执行状态.
-------------------------------------------------------
Resume()方法内部调用了ResumeThread,它返回当前的暂停计数.

DWORD ResumeThread(
  HANDLE hThread
);
ResumeThread会检查这个计数的值,如果是0,此线程不会被暂停.否则将其减少1,如果减少后计数是0 了,线程就会被继续执行.

返回值:

如果返回0,该线程不会被暂停.

返回1,线程不会被暂停,但是被重新开始.

返回值大于1,线程会被继续暂停.
------------------------------------------------------
Suspend()方法内部调用了SuspendThread;
该函数将使得线程被暂停,并且其暂停计数增加1.并返回当前的暂停计数. 
原创粉丝点击