AsyncReaderWriterLock Třída
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Neblokující zámek, který umožňuje souběžný přístup, výhradní přístup nebo souběžný přístup s možností upgradu na výhradní přístup.
public ref class AsyncReaderWriterLock : IDisposable, Microsoft::VisualStudio::Threading::IHangReportContributor
public class AsyncReaderWriterLock : IDisposable, Microsoft.VisualStudio.Threading.IHangReportContributor
type AsyncReaderWriterLock = class
interface IHangReportContributor
interface IDisposable
Public Class AsyncReaderWriterLock
Implements IDisposable, IHangReportContributor
- Dědičnost
-
AsyncReaderWriterLock
- Odvozené
- Implementuje
Poznámky
Musíme místo vrácení úkolu{LockReleaser} použít vlastní awaitable, protože musíme nastavit data CallContext v kontextu osoby, která zámek přijímá, což vyžaduje, abychom na začátku pokračování spustili kód (bez ohledu na to, jestli získáme nebo ne).
Konstruktory
| Name | Description |
|---|---|
| AsyncReaderWriterLock() |
Inicializuje novou instanci AsyncReaderWriterLock třídy. |
| AsyncReaderWriterLock(Boolean) |
Inicializuje novou instanci AsyncReaderWriterLock třídy. |
| AsyncReaderWriterLock(JoinableTaskContext, Boolean) |
Inicializuje novou instanci AsyncReaderWriterLock třídy. |
Vlastnosti
| Name | Description |
|---|---|
| AmbientLock |
Získá zámek uchovávaný kontextem provádění volajícího. |
| CanCurrentThreadHoldActiveLock |
Získá hodnotu určující, zda aktuální vlákno je povoleno uchovávat aktivní zámek. |
| CaptureDiagnostics |
Získá nebo nastaví hodnotu označující, zda by měly být vynaloženy další prostředky ke shromažďování informací, které by byly užitečné při diagnostice zablokování atd. |
| Completion |
Získá úkol, jehož dokončení signály, že tento zámek již nebude vydávat zámky. |
| DeadlockCheckTimeout |
Získá časové zpoždění ke kontrole, zda čekající zapisovač uzamčení a čtečky zámky tvoří vzájemné zablokování. |
| IsAnyLockHeld |
Získá hodnotu určující, zda jakýkoli druh zámku je držen volající a lze jej okamžitě použít vzhledem k kontextu volajícího. |
| IsAnyPassiveLockHeld |
Získá hodnotu určující, zda jakýkoli druh zámku je držen volající bez ohledu na kompatibilitu zámku kontextu volajícího. |
| IsPassiveReadLockHeld |
Získá hodnotu určující, zda je zámek čtení uložen volajícím bez ohledu na kompatibilitu zámku kontextu volajícího. |
| IsPassiveUpgradeableReadLockHeld |
Získá hodnotu určující, zda je upgradeable read lock držení volající bez ohledu na kompatibilitu zámku kontextu volajícího. |
| IsPassiveWriteLockHeld |
Získá hodnotu určující, zda je zámek zápisu držen volajícím bez ohledu na kompatibilitu zámku kontextu volajícího. |
| IsReadLockHeld |
Získá hodnotu určující, zda volající drží zámek čtení. |
| IsUnsupportedSynchronizationContext |
Získá hodnotu určující, zda aktuální SynchronizationContext je jeden, který není podporován tímto zámkem. |
| IsUpgradeableReadLockHeld |
Získá hodnotu označující, zda volající obsahuje upgradovatelný zámek čtení. |
| IsWriteLockHeld |
Získá hodnotu určující, zda volající drží zámek zápisu. |
| NoMessagePumpSynchronizationContext |
SynchronizationContext Získá, který, při použití, potlačuje jakékoli čerpadlo zpráv, které může běžet během synchronních bloků volajícího vlákna. |
| SyncObject |
Získá objekt použitý k synchronizaci přístupu k polím této instance. |
Metody
| Name | Description |
|---|---|
| Complete() |
Způsobí odmítnutí nových žádostí o uzamčení nejvyšší úrovně a Completion úkol přechod na dokončený stav po vydání všech vydaných zámků. |
| Dispose() |
Neblokující zámek, který umožňuje souběžný přístup, výhradní přístup nebo souběžný přístup s možností upgradu na výhradní přístup. |
| Dispose(Boolean) |
Odstraní spravované a nespravované prostředky uchovávané touto instancí. |
| GetAggregateLockFlags() |
Vrátí agregaci příznaků zámku pro všechny vnořené zámky. |
| GetHangReport() |
Přispívá k datům pro sestavu zablokování. |
| GetTaskSchedulerForReadLockRequest() |
Získejte plánovač úloh, aby po získání zámku spustil pokračování. AsyncReaderWriterLock používá speciální SynchronizationContext pro zpracování exkluzivních zámků a bude ignorovat zadaný plánovač úloh, takže se používá pouze ve scénáři zámku pro čtení. Tato metoda se volá v kontextu spuštění, aby počkala zámek čtení, takže může vyzvednout TaskScheduler na základě aktuálního kontextu spuštění. Poznámka: Plánovač úloh se používá pouze při pozdějším vydání zámku. Pokud se zámek vydá okamžitě, když CanCurrentThreadHoldActiveLock vrátí hodnotu true, bude ignorován. |
| HideLocks() |
Zabrání použití nebo viditelnosti zámků volajícího, dokud nebude vrácená hodnota uvolněna. |
| LockStackContains(AsyncReaderWriterLock+LockFlags, AsyncReaderWriterLock+LockHandle) |
Zkontroluje, jestli agregované příznaky ze všech zámků v zásobníku zámků splňují zadané příznaky. |
| OnBeforeExclusiveLockReleasedAsync() |
Aktivuje se, když bude vydán poslední zámek zápisu. |
| OnBeforeLockReleasedAsync(Boolean, AsyncReaderWriterLock+LockHandle) |
Aktivuje se, když se uvolní nějaký zámek. |
| OnBeforeWriteLockReleased(Func<Task>) |
Zaregistruje zpětné volání, které se má vyvolat, když se zámek zápisu uchovávaný volajícím chystá nakonec uvolnit (vnější zámek zápisu). |
| OnCriticalFailure(Exception) |
Vyvoláno, když zámek zjistí vnitřní chybu nebo neplatný způsob použití, který značí závažnou chybu, která by měla být okamžitě hlášena aplikaci nebo snížit proces, aby se zabránilo zablokování nebo poškození dat. |
| OnCriticalFailure(String) |
Vyvoláno, když zámek zjistí vnitřní chybu nebo neplatný způsob použití, který značí závažnou chybu, která by měla být okamžitě hlášena aplikaci nebo snížit proces, aby se zabránilo zablokování nebo poškození dat. |
| OnExclusiveLockReleasedAsync() |
Vyvoláno po uvolnění exkluzivního zámku, ale předtím, než někdo má šanci vstoupit do zámku. |
| OnUpgradeableReadLockReleased() |
Vyvoláno při uvolnění upgradovatelného zámku čtení na nejvyšší úrovni a ponechání zbývajícího zámku (zápisu). |
| ReadLockAsync(CancellationToken) |
Získá zámek pro čtení, asynchronně čeká na zámek, pokud není okamžitě dostupný. |
| UpgradeableReadLockAsync(AsyncReaderWriterLock+LockFlags, CancellationToken) |
Získá upgradovatelný zámek pro čtení, asynchronně čeká na zámek, pokud není okamžitě dostupný. |
| UpgradeableReadLockAsync(CancellationToken) |
Získá upgradovatelný zámek pro čtení, asynchronně čeká na zámek, pokud není okamžitě dostupný. |
| WriteLockAsync(AsyncReaderWriterLock+LockFlags, CancellationToken) |
Získá zámek zápisu, asynchronně čeká na zámek, pokud není okamžitě dostupný. |
| WriteLockAsync(CancellationToken) |
Získá zámek zápisu, asynchronně čeká na zámek, pokud není okamžitě dostupný. |
Explicitní implementace rozhraní
| Name | Description |
|---|---|
| IHangReportContributor.GetHangReport() |
Přispívá k datům pro sestavu zablokování. |
Platí pro
Bezpečný přístup z více vláken
Tento typ je bezpečný pro všechny členy.