ICLRSyncManager::CreateRWLockOwnerIterator 方法
要求通用語言執行平台 (CLR) 建立迭代器,以便主機用來判斷在讀取器/寫入器鎖定上等候的工作集。
語法
HRESULT CreateRWLockOwnerIterator (
[in] SIZE_T cookie,
[out] SIZE_T *pIterator
);
參數
cookie
[in] 與所需讀取器/寫入器鎖定相關聯的 Cookie。
pIterator
[out] 可傳遞至 GetRWLockOwnerNext 和 DeleteRWLockOwnerIterator 方法之迭代器的指標。
傳回值
HRESULT | 描述 |
---|---|
S_OK | CreateRWLockOwnerIterator 已成功傳回。 |
HOST_E_CLRNOTAVAILABLE | CLR 尚未載入處理序,或 CLR 處於無法執行受控程式碼或成功處理呼叫的狀態。 |
HOST_E_TIMEOUT | 呼叫逾時。 |
HOST_E_NOT_OWNER | 呼叫端未擁有鎖定。 |
HOST_E_ABANDONED | 封鎖的執行緒或 Fiber 在其上等候時,事件遭到取消。 |
E_FAIL | 發生未知的重大失敗。 如果方法傳回 E_FAIL,則 CLR 就無法再用於處理序。 後續對裝載方法發出的呼叫會傳回 HOST_E_CLRNOTAVAILABLE。 |
HOST_E_INVALIDOPERATION | CreateRWLockOwnerIterator 已在目前正在執行受控程式碼的執行緒上呼叫。 |
備註
主機通常會在死結偵測期間呼叫 CreateRWLockOwnerIterator
、DeleteRWLockOwnerIterator
和 GetRWLockOwnerNext
方法。 主機負責確保讀取器/寫入器鎖定仍然有效,因為 CLR 不會嘗試讓讀取器/寫入器鎖定保持運作。 主機有數個策略可用於確保鎖定的有效性:
主機可以在讀取器/寫入器鎖定上封鎖釋放呼叫 (例如 IHostSemaphore::ReleaseSemaphore),同時確保此封鎖不會造成死結。
主機可封鎖出口,而無法在與讀取器/寫入器鎖定相關聯的事件物件上等候,再次確保此封鎖不會造成死結。
注意
CreateRWLockOwnerIterator
只能在目前正在執行非受控程式碼的執行緒上進行呼叫。
規格需求
平台:請參閱系統需求。
標題: MSCorEE.h
程式庫:包含作為 MSCorEE.dll 中的資源
.NET Framework版本:自 2.0 起提供