Поделиться через


Метод 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 Событие было отменено во время ожидания заблокированного потока или волокна.
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

См. также раздел