VC Service程式設計(八)多執行緒服務

2021-06-27 09:52:19 字數 412 閱讀 7052

scm(服務控制管理器)向服務的控制處理器傳送服務控制事件來控制乙個服務。服務必須在短時間內響應控制請求,使得scm可以明確服務的當前狀態。還有,服務的當前狀態必須和它向scm報告的狀態相一致。

由於服務和scm之間的這種通訊機制,使用多執行緒服務必須小心。當從scm那裡收到停止指示,在向scm報告服務已經停止之前,必須等待服務中的所有執行緒全部退出。否則,scm可能不能正確關閉服務。

服務響應停止控制事件並開始停止服務的工作,這時需要通知scm。如果服務在之前呼叫的setservicestatus中設定的等待時間內做出響應,並且檢查點比之前呼叫的setservicestatus中設定的檢查點大,scm就假定服務已經開始停止處理。

如果在所有的執行緒退出之前,服務向scm報告已經停止,scm可能會認為這是矛盾的。這可能導致服務進入乙個不能停止也不能重新啟動的狀態。

多執行緒程式設計

1 多執行緒的基本思路不是在介面執行緒執行費時的 而是專門啟動乙個執行緒 稱作工作執行緒 來完成,介面執行緒只負責介面的 顯示 和操作,而工作執行緒只負責耗時的操作過程。2 對於普通的win32應用程式來說,執行緒可以分為兩種 介面 ui user inte ce 執行緒和工作執行緒。介面執行緒一般...

多執行緒程式設計

如何編寫執行緒安全的dll 在我的工作中經常會編寫dll,這些dll有個共同的特點就是都有乙個初始化函式,乙個資源釋放函式,其他幾個函式都是核心功能函式。而且這些dll有時會被多個程序同時呼叫,這就牽扯到多程序的多執行緒呼叫dll的問題。有點繞口,以下我根據我實踐中遇到的問題,分四種情況分享一下我解...

多執行緒程式設計

1 執行緒的狀態 建立狀態 準備好了乙個多執行緒的物件 就緒狀態 呼叫了start 方法,等待cpu進行排程 執行狀態 執行run 方法 阻塞狀態 暫時停止執行,可能將資源交給其他執行緒使用 終止狀態 死亡狀態 執行緒銷毀 2 執行緒的常用方法 thread類 取得執行緒名稱 getname thr...