可等待定時器

可等待定時器對象Windows作業系統的一種同步對象,當設定的期限到了時,對象被置為signaled狀態。

基本介紹

  • 中文名:可等待定時器
  • 性質:同步對象
  • 用途:定時
  • 領域:計算機
簡介,異步過程調用,Windows作業系統,

簡介

可創建兩種可等待定時器對象:
  • 手工重置(manual-reset):保持signaled狀態直至調用SetWaitableTimer函式設定了新的期限。
  • 同步(synchronization):保持signaled狀態直至一個執行緒在該對象上完成了等待操作。
兩種可等待定時器對象都可以是周期定時器(periodic timer)。周期定時器在每次周期到期時可重新激活,直至它被重置或者被取消。周期定時器或者是手工重置定時器或者是同步定時器。
當定時器變為signaled狀態, 處理器須執行相關的指令(如completion routine)。高頻率的定時器使得處理器處於繁忙狀態,阻止其進入低能耗狀態。考慮在程式中使用事件通知而不是定時器通知。如果必須使用定時器,考慮使用一次性定時器而不是周期定時器。或者設定周期定時器的間隔大於1秒鐘。
執行緒使用CreateWaitableTimer或CreateWaitableTimerEx函式創建定時器對象,並指明是手工重置定時器還是同步定時器,還可指定定時器的名字. 其他進程中的執行緒可以指出定時器的名字,用OpenWaitableTimer函式打開一個已經存在的定時器。任何執行緒可以給出一個定時器的句柄,用等待函式(wait function)在該定時器對象上等待其狀態變為signaled.
執行緒調用SetWaitableTimer函式來激活定時器,使用CancelWaitableTimer函式設定定時器為無效(inactive)狀態。使用完定時器後,調用CloseHandle函式關閉它.
Windows作業系統對定時器對象的處理過程為:
  • 當一個定時器被啟動(set),定時器對象的狀態為nonsignaled, 並被放在核心定時器佇列中。
  • 當一個定時器到期,定時器對象置為signaled狀態。如果定時器有(綁定的)完成過程(completion routine), 該完成過程被放入啟動該定時期的執行緒的異步過程調用(APC)佇列,直至該執行緒進入可喚醒等待狀態(alertable wait state)時作業系統按照異步過程調用方式執行該過程. 如果為周期定時器,它再次被放入核心定時器佇列。
  • 當一個定時器被取消,如果它處於等待期間,會從核心定時器佇列中刪除。如果定時器已經到期了並且在啟動該定時期的執行緒有一個APC處於排隊中,線上程APC佇列中刪除這個未執行的APC。 定時器的信號態(signaled state)不受影響。

異步過程調用

異步過程調用(asynchronous procedure call)是函式(過程)在特定執行緒中被異步執行。在Microsoft Windows作業系統中, APC是一種並發機制,用於異步IO或者定時器
Windows NT作業系統中有3種APC:
  • 核心模式特殊APC:相應的APC函式為核心函式。在IRQL=APC_LEVEL級上有可調度的活動時,執行此類APC。會搶先所有的用戶模態以及IRQL = PASSIVE_LEVEL的核心模態下的代碼的執行。
  • 核心模式常規APC:在所有的核心模式特殊APC執行完畢後,核心模式常規APC在IRQL = PASSIVE_LEVEL下開始執行。會搶先所有的用戶模式代碼的執行。用於檔案系統。
  • 用戶模式APC:是指相應的 APC 函式位於用戶空間、在用戶空間執行。執行緒處於alertable wait狀態該APC才可以被調度執行。用戶模式下調用系統API如SleepEx,SignalObjectAndWait,WaitForSingleObjectEx,WaitForMultipleObjectsEx,MsgWaitForMultipleObjectEx等,可以使執行緒進入alertable狀態。這些API函式最終都是調用了核心中的KeWaitForSingleObject,KeWaitForMultipleObjects,KeWaitForMutexObject,KeDelayExecutionThread,KeTestAlertThread等函式。執行緒在alertable wait狀態所有核心模式API執行完畢,返回用戶模式時,核心轉去執行APC,完成後再繼續執行緒的原來執行。

Windows作業系統

Microsoft Windows微軟公司推出的一系列作業系統。它問世於1985年,起初是MS-DOS之下的桌面環境,其後續版本逐漸發展成為主要為個人電腦伺服器用戶設計的作業系統,並最終獲得了世界個人計算機作業系統的壟斷地位。此作業系統可以在幾種不同類型的平台上運行,如個人計算機(PC)、移動設備、伺服器(Server)和嵌入式系統等等,其中在個人計算機的領域套用內最為普遍。在2004年國際數據信息公司一次有關未來發展趨勢的會議上,副董事長Avneesh Saxena宣布Windows擁有終端作業系統大約70%的市場份額。
Windows作業系統目前最新的穩定版是於2015年7月29日發布的Windows 10。Windows Server目前最新的穩定版是2016年9月26日發布的Windows Server 2016

相關詞條

熱門詞條

聯絡我們