共用方式為


ICLRSyncManager::CreateRWLockOwnerIterator 方法

要求 Common Language Runtime (CLR) 為主應用程式建立 Iterator,以判斷等候讀取器-寫入器鎖定的工作集。

HRESULT CreateRWLockOwnerIterator (
    [in]  SIZE_T    cookie,
    [out] SIZE_T   *pIterator
);

參數

傳回值

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

備註

主應用程式通常會在死結偵測期間呼叫 CreateRWLockOwnerIteratorDeleteRWLockOwnerIteratorGetRWLockOwnerNext 方法。 主應用程式會負責確認讀取器-寫入器鎖定仍然有效,因為 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

請參閱

參考

ICLRSyncManager 介面

IHostSyncManager 介面