ReaderWriterLock.AcquireReaderLock Metódus

Definíció

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.

Lásd még

A következőre érvényes: