ICLRSyncManager::CreateRWLockOwnerIterator — Metoda
Żądania, aby środowisko uruchomieniowe języka wspólnego (CLR) tworzyło iterator dla hosta w celu określenia zestawu zadań oczekujących na blokadę modułu zapisywania czytnika.
Składnia
HRESULT CreateRWLockOwnerIterator (
[in] SIZE_T cookie,
[out] SIZE_T *pIterator
);
Parametry
cookie
[in] Plik cookie skojarzony z żądaną blokadą czytnika i zapisywania.
pIterator
[out] Wskaźnik do iteratora, który można przekazać do metod GetRWLockOwnerNext i DeleteRWLockOwnerIterator .
Wartość zwracana
HRESULT | Opis |
---|---|
S_OK | CreateRWLockOwnerIterator zwrócone pomyślnie. |
HOST_E_CLRNOTAVAILABLE | ClR nie został załadowany do procesu lub CLR jest w stanie, w którym nie może uruchomić zarządzanego kodu lub przetworzyć wywołania pomyślnie. |
HOST_E_TIMEOUT | Upłynął limit czasu wywołania. |
HOST_E_NOT_OWNER | Obiekt wywołujący nie jest właścicielem blokady. |
HOST_E_ABANDONED | Zdarzenie zostało anulowane, gdy zablokowany wątek lub światłowod czekał na nie. |
E_FAIL | Wystąpił nieznany katastrofalny błąd. Gdy metoda zwraca E_FAIL, clR nie będzie już można jej używać w ramach tego procesu. Kolejne wywołania metod hostingu zwracają HOST_E_CLRNOTAVAILABLE. |
HOST_E_INVALIDOPERATION | CreateRWLockOwnerIterator została wywołana w wątku, który jest obecnie uruchomiony kod zarządzany. |
Uwagi
Hosty zwykle nazywają CreateRWLockOwnerIterator
metody , DeleteRWLockOwnerIterator
i GetRWLockOwnerNext
podczas wykrywania zakleszczenia. Host jest odpowiedzialny za zapewnienie, że blokada czytnika i zapisującego jest nadal prawidłowa, ponieważ CLR nie podejmuje próby utrzymania blokady czytnika i zapisywania przy życiu. Dla hosta jest dostępnych kilka strategii zapewniających ważność blokady:
Host może blokować wywołania wydania blokady czytnika i zapisywania (na przykład IHostSemaphore::ReleaseSemaphore) przy jednoczesnym upewnieniu się, że ten blok nie powoduje zakleszczenia.
Host może zablokować zakończenie oczekiwania na obiekt zdarzenia skojarzony z blokadą modułu zapisywania czytnika, ponownie upewniając się, że ten blok nie powoduje zakleszczenia.
Uwaga
CreateRWLockOwnerIterator
Element musi być wywoływany tylko w wątkach, które obecnie są wykonywane jako niezarządzany kod.
Wymagania
Platformy: Zobacz Wymagania systemowe.
Nagłówka: MSCorEE.h
Biblioteki: Uwzględnione jako zasób w MSCorEE.dll
wersje .NET Framework: dostępne od wersji 2.0