1. 程式人生 > >關於TThread類的Suspend()方法和Resume()方法.

關於TThread類的Suspend()方法和Resume()方法.


    並不是只要呼叫了Resume()執行緒就能繼續執行,這個函式執行的效果根據該執行緒的暫停計數(suspend count)來確定.
    每個執行緒都有一個暫停計數(最大MAXIMUM_SUSPEND_COUNT),如果一個執行緒的暫停計數大於0,那麼執行緒就會被暫停,否則不會被暫停,並且為可執行狀態.
-------------------------------------------------------
Resume()方法內部呼叫了ResumeThread,它返回當前的暫停計數.

DWORD ResumeThread(
  HANDLE hThread
);
ResumeThread會檢查這個計數的值,如果是0,此執行緒不會被暫停.否則將其減少1,如果減少後計數是0 了,執行緒就會被繼續執行.

返回值:

如果返回0,該執行緒不會被暫停.

返回1,執行緒不會被暫停,但是被重新開始.

返回值大於1,執行緒會被繼續暫停.
------------------------------------------------------
Suspend()方法內部呼叫了SuspendThread;
該函式將使得執行緒被暫停,並且其暫停計數增加1.並返回當前的暫停計數.