ReaderWriterLock.AcquireReaderLock Metódus
Definíció
Fontos
Egyes információk olyan, kiadás előtti termékekre vonatkoznak, amelyek a kiadásig még jelentősen módosulhatnak. A Microsoft nem vállal kifejezett vagy törvényi garanciát az itt megjelenő információért.
Beolvas egy olvasózárat.
Túlterhelések
| Name | Description |
|---|---|
| AcquireReaderLock(Int32) |
Beolvas egy olvasózárat az időtúllépés értékével Int32 . |
| AcquireReaderLock(TimeSpan) |
Beolvas egy olvasózárat az időtúllépés értékével TimeSpan . |
AcquireReaderLock(Int32)
- Forrás:
- ReaderWriterLock.cs
- Forrás:
- ReaderWriterLock.cs
- Forrás:
- ReaderWriterLock.cs
- Forrás:
- ReaderWriterLock.cs
- Forrás:
- ReaderWriterLock.cs
Beolvas egy olvasózárat az időtúllépés értékével Int32 .
public:
void AcquireReaderLock(int millisecondsTimeout);
[System.Runtime.Versioning.UnsupportedOSPlatform("browser")]
public void AcquireReaderLock(int millisecondsTimeout);
public void AcquireReaderLock(int millisecondsTimeout);
[<System.Runtime.Versioning.UnsupportedOSPlatform("browser")>]
member this.AcquireReaderLock : int -> unit
member this.AcquireReaderLock : int -> unit
Public Sub AcquireReaderLock (millisecondsTimeout As Integer)
Paraméterek
- millisecondsTimeout
- Int32
Az időtúllépés ezredmásodpercben.
- Attribútumok
Kivételek
millisecondsTimeout a zárolási kérelem megadása előtt lejár.
Példák
Az alábbi példakód bemutatja, hogyan szerezhet be és oldhat fel olvasói zárolást, és hogyan kezelheti a kérések túllépésekor kidobott kivételeket.
Ez a kód egy nagyobb, az ReaderWriterLock osztályhoz tartozó példa része.
// The complete code is located in the ReaderWriterLock class topic.
using System;
using System.Threading;
public class Example
{
static ReaderWriterLock rwl = new ReaderWriterLock();
// Define the shared resource protected by the ReaderWriterLock.
static int resource = 0;
' The complete code is located in the ReaderWriterLock class topic.
Imports System.Threading
Public Module Example
Private rwl As New ReaderWriterLock()
' Define the shared resource protected by the ReaderWriterLock.
Private resource As Integer = 0
// Request and release a reader lock, and handle time-outs.
static void ReadFromResource(int timeOut)
{
try {
rwl.AcquireReaderLock(timeOut);
try {
// It is safe for this thread to read from the shared resource.
Display("reads resource value " + resource);
Interlocked.Increment(ref reads);
}
finally {
// Ensure that the lock is released.
rwl.ReleaseReaderLock();
}
}
catch (ApplicationException) {
// The reader lock request timed out.
Interlocked.Increment(ref readerTimeouts);
}
}
' Request and release a reader lock, and handle time-outs.
Sub ReadFromResource(timeOut As Integer)
Try
rwl.AcquireReaderLock(timeOut)
Try
' It's safe for this thread to read from the shared resource.
Display("reads resource value " & resource)
Interlocked.Increment(reads)
Finally
' Ensure that the lock is released.
rwl.ReleaseReaderLock()
End Try
Catch ex As ApplicationException
' The reader lock request timed out.
Interlocked.Increment(readerTimeouts)
End Try
End Sub
}
End Module
Megjegyzések
AcquireReaderLock blokkolja, ha egy másik szál rendelkezik az írózárral, vagy ha legalább egy szál az író zárolására vár.
Note
Ha az aktuális szál már rendelkezik az írózárral, nincs olvasózár. Ehelyett az írózár zárolásának száma növekszik. Ez megakadályozza, hogy egy szál blokkoljon a saját írózárán. Az eredmény pontosan megegyezik a hívással AcquireWriterLock, és az írózár feloldásakor további hívásra ReleaseWriterLock van szükség.
AcquireReaderLock támogatja a rekurzív olvasózárolási kéréseket. Ez azt jelzi, hogy egy szál többször is meghívhatja az AcquireReaderLockot, ami minden alkalommal növeli a zárolások számát. Minden híváshoz egyszer kell hívnia ReleaseReaderLockAcquireReaderLock. Másik lehetőségként meghívhatja ReleaseLock a zárolások számának azonnali nullára való csökkentésére.
A rekurzív zárolási kérések mindig azonnal meg lesznek adva, anélkül, hogy a kérési szálat az olvasósorba helyeznák. Óvatosan használja a rekurzív zárolásokat, hogy elkerülje a hosszú ideig tartó írózárolási kérelmek blokkolását.
Az érvényes időtúllépési értékekért lásd: ReaderWriterLock.
Lásd még
A következőre érvényes:
AcquireReaderLock(TimeSpan)
- Forrás:
- ReaderWriterLock.cs
- Forrás:
- ReaderWriterLock.cs
- Forrás:
- ReaderWriterLock.cs
- Forrás:
- ReaderWriterLock.cs
- Forrás:
- ReaderWriterLock.cs
Beolvas egy olvasózárat az időtúllépés értékével TimeSpan .
public:
void AcquireReaderLock(TimeSpan timeout);
[System.Runtime.Versioning.UnsupportedOSPlatform("browser")]
public void AcquireReaderLock(TimeSpan timeout);
public void AcquireReaderLock(TimeSpan timeout);
[<System.Runtime.Versioning.UnsupportedOSPlatform("browser")>]
member this.AcquireReaderLock : TimeSpan -> unit
member this.AcquireReaderLock : TimeSpan -> unit
Public Sub AcquireReaderLock (timeout As TimeSpan)
Paraméterek
- timeout
- TimeSpan
Az TimeSpan időtúllépési időszakot megadva.
- Attribútumok
Kivételek
timeout a zárolási kérelem megadása előtt lejár.
timeout a -1 ezredmásodpercen kívüli negatív értéket ad meg.
Megjegyzések
AcquireReaderLock blokkolja, ha egy másik szál rendelkezik az írózárral, vagy ha legalább egy szál az író zárolására vár.
Note
Ha az aktuális szál már rendelkezik az írózárral, nincs olvasózár. Ehelyett az írózár zárolásának száma növekszik. Ez megakadályozza, hogy egy szál blokkoljon a saját írózárán. Az eredmény pontosan megegyezik a hívással AcquireWriterLock, és az írózár feloldásakor további hívásra ReleaseWriterLock van szükség.
AcquireReaderLock támogatja a rekurzív olvasózárolási kéréseket. Ez azt jelzi, hogy egy szál többször is meghívhatja az AcquireReaderLockot, ami minden alkalommal növeli a zárolások számát. Minden híváshoz egyszer kell hívnia ReleaseReaderLockAcquireReaderLock. Másik lehetőségként meghívhatja ReleaseLock a zárolások számának azonnali nullára való csökkentésére.
A rekurzív zárolási kérések mindig azonnal meg lesznek adva, anélkül, hogy a kérési szálat az olvasósorba helyeznák. Óvatosan használja a rekurzív zárolásokat, hogy elkerülje a hosszú ideig tartó írózárolási kérelmek blokkolását.
Az érvényes időtúllépési értékekért lásd: ReaderWriterLock.