ReaderWriterLock.AcquireReaderLock Metode
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
Memperoleh kunci pembaca.
Overload
| Nama | Deskripsi |
|---|---|
| AcquireReaderLock(Int32) |
Memperoleh kunci pembaca, menggunakan Int32 nilai untuk waktu habis. |
| AcquireReaderLock(TimeSpan) |
Memperoleh kunci pembaca, menggunakan TimeSpan nilai untuk waktu habis. |
AcquireReaderLock(Int32)
- Sumber:
- ReaderWriterLock.cs
- Sumber:
- ReaderWriterLock.cs
- Sumber:
- ReaderWriterLock.cs
- Sumber:
- ReaderWriterLock.cs
- Sumber:
- ReaderWriterLock.cs
Memperoleh kunci pembaca, menggunakan Int32 nilai untuk waktu habis.
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)
Parameter
- millisecondsTimeout
- Int32
Waktu habis dalam milidetik.
- Atribut
Pengecualian
millisecondsTimeout kedaluwarsa sebelum permintaan kunci diberikan.
Contoh
Contoh kode berikut menunjukkan cara memperoleh dan merilis kunci pembaca, dan cara menangani pengecualian yang dilemparkan saat permintaan habis.
Kode ini adalah bagian dari contoh yang lebih besar yang disediakan untuk ReaderWriterLock kelas .
// 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
Keterangan
AcquireReaderLock memblokir jika utas yang berbeda memiliki kunci penulis, atau jika setidaknya satu utas menunggu kunci penulis.
Note
Jika utas saat ini sudah memiliki kunci penulis, tidak ada kunci pembaca yang diperoleh. Sebaliknya, jumlah kunci pada kunci penulis bertahap. Ini mencegah utas memblokir kunci penulisnya sendiri. Hasilnya sama persis dengan panggilan AcquireWriterLock, dan panggilan tambahan ke ReleaseWriterLock diperlukan saat merilis kunci penulis.
AcquireReaderLock mendukung permintaan kunci pembaca rekursif. Artinya, utas dapat memanggil AcquireReaderLock beberapa kali, yang menaikkan jumlah kunci setiap kali. Anda harus memanggil ReleaseReaderLock sekali untuk setiap kali Anda memanggil AcquireReaderLock. Atau, Anda dapat memanggil ReleaseLock untuk mengurangi jumlah kunci menjadi nol segera.
Permintaan penguncian rekursif selalu diberikan segera, tanpa menempatkan utas yang meminta dalam antrean pembaca. Gunakan kunci rekursif dengan hati-hati, untuk menghindari pemblokiran permintaan writer-lock untuk jangka waktu yang lama.
Untuk nilai batas waktu yang valid, lihat ReaderWriterLock.
Lihat juga
-
Managed Threading - ReaderWriterLock
Berlaku untuk
AcquireReaderLock(TimeSpan)
- Sumber:
- ReaderWriterLock.cs
- Sumber:
- ReaderWriterLock.cs
- Sumber:
- ReaderWriterLock.cs
- Sumber:
- ReaderWriterLock.cs
- Sumber:
- ReaderWriterLock.cs
Memperoleh kunci pembaca, menggunakan TimeSpan nilai untuk waktu habis.
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)
Parameter
- timeout
- TimeSpan
Menentukan TimeSpan periode waktu habis.
- Atribut
Pengecualian
timeout kedaluwarsa sebelum permintaan kunci diberikan.
timeout menentukan nilai negatif selain -1 milidetik.
Keterangan
AcquireReaderLock memblokir jika utas yang berbeda memiliki kunci penulis, atau jika setidaknya satu utas menunggu kunci penulis.
Note
Jika utas saat ini sudah memiliki kunci penulis, tidak ada kunci pembaca yang diperoleh. Sebaliknya, jumlah kunci pada kunci penulis bertahap. Ini mencegah utas memblokir kunci penulisnya sendiri. Hasilnya sama persis dengan panggilan AcquireWriterLock, dan panggilan tambahan ke ReleaseWriterLock diperlukan saat merilis kunci penulis.
AcquireReaderLock mendukung permintaan kunci pembaca rekursif. Artinya, utas dapat memanggil AcquireReaderLock beberapa kali, yang menaikkan jumlah kunci setiap kali. Anda harus memanggil ReleaseReaderLock sekali untuk setiap kali Anda memanggil AcquireReaderLock. Atau, Anda dapat memanggil ReleaseLock untuk mengurangi jumlah kunci menjadi nol segera.
Permintaan penguncian rekursif selalu diberikan segera, tanpa menempatkan utas yang meminta dalam antrean pembaca. Gunakan kunci rekursif dengan hati-hati, untuk menghindari pemblokiran permintaan writer-lock untuk jangka waktu yang lama.
Untuk nilai batas waktu yang valid, lihat ReaderWriterLock.
Lihat juga
-
Managed Threading - ReaderWriterLock