-
CEvent
鎖定
CEvent類的一個對象,表示一個“事件”——一個允許一個事件發生時線程通知另一個線程的同步對象。在一個線程需要了解何時執行任務時,事件是十分有用的。
- 中文名
- CEvent
- 類 型
- 自動和手工。
- 作 用
- 通知拷貝線程
- 對 象
- 線程
CEvent舉例
例如,拷貝數據到數據文檔時,線程應被通知何時數據是可用的。當新數據可用時,通過運用CEvent對象來通知拷貝線程,線程才可能儘快地執行。
CEvent對象
類型
CEvent對象有兩種類型:自動和手工。
一個手工CEvent對象存在於由ResetEvent 或SetEvent設置的狀態中,直到另一個函數被調用。一個自動CEvent對象在至少一個線程被釋放後自動返回一個無標記(無用的)狀態。
對象的使用
要使用一個CEvent對象,應在需要時構造一個CEvent對象。指定要等待的事件,應用應擁有它,就可以在構造函數返回時訪問事件。調用SetEvent標記(使可用)事件對象,然後當訪問完控制資源時,調用Unlock函數。
另一個使用CEvent對象的方法是添加一個CEvent類型的變量,使之成為希望控制的類的一個數據成員。在控制對象被構造期間,可調用CEvent數據成員的構造函數,它指明時間是否是最初就被標記、需要的事件對象類型、事件名稱(如果在進程中要使用)和所希望的安全屬性。
按以下方式訪問一個被CEvent對象控制的資源:首先創建在資源訪問成員函數中構造一個CSingleLock或CMultiLock類型的變量,然後調用封鎖對象的Lock成員函數(如CMultiLock::Lock)。此時,線程要麼可以訪問資源,等待資源釋放後訪問;要麼等待資源釋放而超時,訪問資源失敗。在各種情況下,資源都被以線程安全方式訪問。要釋放資源,可調用SetEvent來標識一個事件對象,然後使用封鎖對象的Unlock成員函數(如CMultiLock::UnLock)成員函數,或允許封鎖對象超過範圍。#include <afxmt.h>
CEvent成員
CEvent | 構造一個CEvent對象 |
CEvent方法
設置一個事件可用(有標記)並釋放某些等待線程 | |
PulseEvent | 設置一個事件可用(有標記),並釋放某些等待線程,設置該事件無效(無標記) |
設置事件無效(無標記) | |
釋放事件對象 |
- 詞條統計
-
- 瀏覽次數:次
- 編輯次數:9次歷史版本
- 最近更新: 1颗梅干