Метод 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