ReaderWriterLock.AcquireWriterLock 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.
Beolvasja az író zárolását.
Túlterhelések
| Name | Description |
|---|---|
| AcquireWriterLock(Int32) |
Beolvasja az író zárolását az időtúllépés értékével Int32 . |
| AcquireWriterLock(TimeSpan) |
Beolvasja az író zárolását az időtúllépés értékével TimeSpan . |
AcquireWriterLock(Int32)
- Forrás:
- ReaderWriterLock.cs
- Forrás:
- ReaderWriterLock.cs
- Forrás:
- ReaderWriterLock.cs
- Forrás:
- ReaderWriterLock.cs
- Forrás:
- ReaderWriterLock.cs
Beolvasja az író zárolását az időtúllépés értékével Int32 .
public:
void AcquireWriterLock(int millisecondsTimeout);
public void AcquireWriterLock(int millisecondsTimeout);
member this.AcquireWriterLock : int -> unit
Public Sub AcquireWriterLock (millisecondsTimeout As Integer)
Paraméterek
- millisecondsTimeout
- Int32
Az időtúllépés ezredmásodpercben.
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 írózárat, é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 the writer lock, and handle time-outs.
static void WriteToResource(Random rnd, int timeOut)
{
try {
rwl.AcquireWriterLock(timeOut);
try {
// It's safe for this thread to access from the shared resource.
resource = rnd.Next(500);
Display("writes resource value " + resource);
Interlocked.Increment(ref writes);
}
finally {
// Ensure that the lock is released.
rwl.ReleaseWriterLock();
}
}
catch (ApplicationException) {
// The writer lock request timed out.
Interlocked.Increment(ref writerTimeouts);
}
}
' Request and release the writer lock, and handle time-outs.
Sub WriteToResource(rnd As Random, timeOut As Integer)
Try
rwl.AcquireWriterLock(timeOut)
Try
' It's safe for this thread to read or write from the shared resource.
resource = rnd.Next(500)
Display("writes resource value " & resource)
Interlocked.Increment(writes)
Finally
' Ensure that the lock is released.
rwl.ReleaseWriterLock()
End Try
Catch ex As ApplicationException
' The writer lock request timed out.
Interlocked.Increment(writerTimeouts)
End Try
End Sub
}
End Module
Megjegyzések
Ez a módszer letiltja, ha egy másik szál olvasózárral vagy írózárral rendelkezik. Az író több egyidejű olvasózárolással történő alternatív zárolásának leírását az ReaderWriterLock osztályban tekintheti meg.
A már olvasózárral rendelkező szálak kétféleképpen szerezhetik be az írózárat: az olvasó zárolásának feloldásával hívás előtt AcquireWriterLockvagy hívással UpgradeToWriterLock.
Figyelmeztetés
Ha egy szál még mindig olvasózárral rendelkezik AcquireWriterLock , akkor letiltja a saját olvasózárát; ha végtelen időtúllépés van megadva, a szál holtpontra kerül. Az ilyen holtpontok elkerülése érdekében határozza IsReaderLockHeld meg, hogy az aktuális szál rendelkezik-e már olvasózárral.
AcquireWriterLock támogatja a rekurzív írózárolási kéréseket. Ez azt jelzi, hogy egy szál többször is meghívható AcquireWriterLock , ami minden alkalommal növeli a zárolások számát. Minden híváshoz egyszer kell hívnia ReleaseWriterLockAcquireWriterLock. 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 írósorba helyeznák.
Az érvényes időtúllépési értékekért lásd: ReaderWriterLock.
Lásd még
A következőre érvényes:
AcquireWriterLock(TimeSpan)
- Forrás:
- ReaderWriterLock.cs
- Forrás:
- ReaderWriterLock.cs
- Forrás:
- ReaderWriterLock.cs
- Forrás:
- ReaderWriterLock.cs
- Forrás:
- ReaderWriterLock.cs
Beolvasja az író zárolását az időtúllépés értékével TimeSpan .
public:
void AcquireWriterLock(TimeSpan timeout);
public void AcquireWriterLock(TimeSpan timeout);
member this.AcquireWriterLock : TimeSpan -> unit
Public Sub AcquireWriterLock (timeout As TimeSpan)
Paraméterek
- timeout
- TimeSpan
Az TimeSpan időtúllépési időszak megadása.
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
Ez a módszer letiltja, ha egy másik szál olvasózárral vagy írózárral rendelkezik. Az író több egyidejű olvasózárolással történő alternatív zárolásának leírását az ReaderWriterLock osztályban tekintheti meg.
A már olvasózárral rendelkező szálak kétféleképpen szerezhetik be az írózárat: az olvasó zárolásának feloldásával hívás előtt AcquireWriterLockvagy hívással UpgradeToWriterLock.
Figyelmeztetés
Ha egy szál még mindig olvasózárral rendelkezik AcquireWriterLock , akkor letiltja a saját olvasózárát; ha végtelen időtúllépés van megadva, a szál holtpontra kerül. Az ilyen holtpontok elkerülése érdekében határozza IsReaderLockHeld meg, hogy az aktuális szál rendelkezik-e már olvasózárral.
AcquireWriterLock támogatja a rekurzív írózárolási kéréseket. Ez azt jelzi, hogy egy szál többször is meghívható AcquireWriterLock , ami minden alkalommal növeli a zárolások számát. Minden híváshoz egyszer kell hívnia ReleaseWriterLockAcquireWriterLock. 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 írósorba helyeznák.
Az érvényes időtúllépési értékekért lásd: ReaderWriterLock.