ICLRSyncManager::CreateRWLockOwnerIterator 方法
要求 Common Language Runtime (CLR) 為主應用程式建立 Iterator,以判斷等候讀取器-寫入器鎖定的工作集。
HRESULT CreateRWLockOwnerIterator (
[in] SIZE_T cookie,
[out] SIZE_T *pIterator
);
參數
cookie
[in] 與所需的讀取器 - 寫入器鎖定產生關聯的 Cookie。pIterator
[out] 可傳遞給 GetRWLockOwnerNext 和 DeleteRWLockOwnerIterator 方法之 Iterator 的指標。
傳回值
HRESULT |
描述 |
---|---|
S_OK |
CreateRWLockOwnerIterator 已成功傳回。 |
HOST_E_CLRNOTAVAILABLE |
CLR 尚未載入至處理序中,或者此 CLR 目前的狀態無法執行 Managed 程式碼或成功處理呼叫。 |
HOST_E_TIMEOUT |
呼叫已逾時。 |
HOST_E_NOT_OWNER |
呼叫端不具備鎖定功能。 |
HOST_E_ABANDONED |
已封鎖執行緒或 Fiber 在等候事件時,該事件已遭取消。 |
E_FAIL |
發生未知的重大錯誤。 當方法傳回 E_FAIL 時,便無法在處理序內使用 CLR。 對裝載方法的後續呼叫會傳回 HOST_E_CLRNOTAVAILABLE。 |
HOST_E_INVALIDOPERATION |
於目前執行 Managed 程式碼的執行緒上呼叫 CreateRWLockOwnerIterator。 |
備註
主應用程式通常會在死結偵測期間呼叫 CreateRWLockOwnerIterator、DeleteRWLockOwnerIterator 和 GetRWLockOwnerNext 方法。 主應用程式會負責確認讀取器-寫入器鎖定仍然有效,因為 CLR 並不會嘗試維持讀取器-寫入器鎖定的正常運作。 主應用程式可以使用數個策略,以確保鎖定有效性:
主應用程式可以封鎖對讀取器-寫入器鎖定呼叫的釋放 (例如 IHostSemaphore::ReleaseSemaphore),同時確定這樣的封鎖不會造成死結。
主應用程式可以封鎖從等候與讀取器 - 寫入器鎖定相關的事件物件結束,同時也可以確定這樣的封鎖不會造成死結。
注意事項 |
---|
只能在目前執行 Unmanaged 程式碼的執行緒上呼叫 CreateRWLockOwnerIterator。 |
需求
**平台:**請參閱 .NET Framework 系統需求。
**標頭:**MSCorEE.h
程式庫:包含做為 MSCorEE.dll 中的資源
**.NET Framework 版本:**4、3.5 SP1、3.5、3.0 SP1、3.0、2.0 SP1、2.0