AsyncReaderWriterLock Kelas
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.
Kunci non-pemblokiran yang memungkinkan akses bersamaan, akses eksklusif, atau bersamaan dengan peningkatan ke akses eksklusif.
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
- Warisan
-
AsyncReaderWriterLock
- Turunan
- Penerapan
Keterangan
Kita harus menggunakan yang dapat ditunggu kustom daripada hanya mengembalikan Task{LockReleaser} karena kita harus mengatur data CallContext dalam konteks orang yang menerima kunci, yang mengharuskan kita untuk mengeksekusi kode di awal kelanjutan (apakah kita menghasilkan atau tidak).
Konstruktor
| Nama | Deskripsi |
|---|---|
| AsyncReaderWriterLock() |
Menginisialisasi instans baru dari kelas AsyncReaderWriterLock. |
| AsyncReaderWriterLock(Boolean) |
Menginisialisasi instans baru dari kelas AsyncReaderWriterLock. |
| AsyncReaderWriterLock(JoinableTaskContext, Boolean) |
Menginisialisasi instans baru dari kelas AsyncReaderWriterLock. |
Properti
| Nama | Deskripsi |
|---|---|
| AmbientLock |
Mendapatkan kunci yang dipegang oleh konteks eksekusi pemanggil. |
| CanCurrentThreadHoldActiveLock |
Mendapatkan nilai yang menunjukkan apakah utas saat ini diizinkan untuk menahan kunci aktif. |
| CaptureDiagnostics |
Mendapatkan atau menetapkan nilai yang menunjukkan apakah sumber daya tambahan harus dihabiskan untuk mengumpulkan informasi yang akan berguna dalam mendiagnosis kebuntuan, dll. |
| Completion |
Mendapatkan tugas yang sinyal penyelesaiannya bahwa kunci ini tidak akan lagi mengeluarkan kunci. |
| DeadlockCheckTimeout |
Mendapatkan penundaan waktu untuk memeriksa apakah kunci penulis yang tertunda dan kunci pembaca membentuk kebuntuan. |
| IsAnyLockHeld |
Mendapatkan nilai yang menunjukkan apakah ada jenis kunci yang dipegang oleh pemanggil dan dapat segera digunakan mengingat konteks pemanggil. |
| IsAnyPassiveLockHeld |
Mendapatkan nilai yang menunjukkan apakah segala jenis kunci dipegang oleh pemanggil tanpa memperhatikan kompatibilitas kunci konteks pemanggil. |
| IsPassiveReadLockHeld |
Mendapatkan nilai yang menunjukkan apakah kunci baca dipegang oleh pemanggil tanpa memperhatikan kompatibilitas kunci konteks pemanggil. |
| IsPassiveUpgradeableReadLockHeld |
Mendapatkan nilai yang menunjukkan apakah kunci baca yang dapat ditingkatkan dipegang oleh pemanggil tanpa memperhatikan kompatibilitas kunci konteks pemanggil. |
| IsPassiveWriteLockHeld |
Mendapatkan nilai yang menunjukkan apakah kunci tulis dipegang oleh pemanggil tanpa memperhatikan kompatibilitas kunci konteks pemanggil. |
| IsReadLockHeld |
Mendapatkan nilai yang menunjukkan apakah penelepon memegang kunci baca. |
| IsUnsupportedSynchronizationContext |
Mendapatkan nilai yang menunjukkan apakah SynchronizationContext saat ini adalah nilai yang tidak didukung oleh kunci ini. |
| IsUpgradeableReadLockHeld |
Mendapatkan nilai yang menunjukkan apakah pemanggil memegang kunci baca yang dapat ditingkatkan. |
| IsWriteLockHeld |
Mendapatkan nilai yang menunjukkan apakah pemanggil memegang kunci tulis. |
| NoMessagePumpSynchronizationContext |
SynchronizationContext Mendapatkan yang, ketika diterapkan, menekan pompa pesan apa pun yang dapat berjalan selama blok sinkron dari utas panggilan. |
| SyncObject |
Mendapatkan objek yang digunakan untuk menyinkronkan akses ke bidang instans ini. |
Metode
| Nama | Deskripsi |
|---|---|
| Complete() |
Menyebabkan permintaan kunci tingkat atas baru ditolak dan Completion tugas untuk transisi ke status selesai setelah kunci yang dikeluarkan dirilis. |
| Dispose() |
Kunci non-pemblokiran yang memungkinkan akses bersamaan, akses eksklusif, atau bersamaan dengan peningkatan ke akses eksklusif. |
| Dispose(Boolean) |
Membuang sumber daya terkelola dan tidak terkelola yang dipegang oleh instans ini. |
| GetAggregateLockFlags() |
Mengembalikan agregat bendera kunci untuk semua kunci berlapis. |
| GetHangReport() |
Mengkontribusikan data untuk laporan macet. |
| GetTaskSchedulerForReadLockRequest() |
Dapatkan penjadwal tugas untuk menjalankan kelanjutan ketika kunci diperoleh. AsyncReaderWriterLock menggunakan khusus SynchronizationContext untuk menangani kunci eksklusif, dan akan mengabaikan penjadwal tugas yang disediakan, sehingga ini hanya digunakan dalam skenario kunci baca. Metode ini dipanggil dalam konteks eksekusi untuk menunggu kunci baca, sehingga dapat mengambil TaskScheduler berdasarkan konteks eksekusi saat ini. Catatan: penjadwal tugas hanya digunakan, saat kunci dikeluarkan nanti. Jika kunci segera dikeluarkan saat CanCurrentThreadHoldActiveLock mengembalikan true, kunci akan diabaikan. |
| HideLocks() |
Mencegah penggunaan atau visibilitas kunci pemanggil hingga nilai yang dikembalikan dibuang. |
| LockStackContains(AsyncReaderWriterLock+LockFlags, AsyncReaderWriterLock+LockHandle) |
Memeriksa apakah bendera agregat dari semua kunci di tumpukan kunci memenuhi bendera yang ditentukan. |
| OnBeforeExclusiveLockReleasedAsync() |
Diaktifkan ketika kunci tulis terakhir akan dilepaskan. |
| OnBeforeLockReleasedAsync(Boolean, AsyncReaderWriterLock+LockHandle) |
Diaktifkan ketika ada kunci yang dilepaskan. |
| OnBeforeWriteLockReleased(Func<Task>) |
Mendaftarkan panggilan balik untuk dipanggil ketika kunci tulis yang dipegang oleh pemanggil pada akhirnya akan dirilis (kunci tulis terluar). |
| OnCriticalFailure(Exception) |
Dipanggil ketika kunci mendeteksi kesalahan internal atau pola penggunaan ilegal yang menunjukkan kelemahan serius yang harus segera dilaporkan ke aplikasi dan/atau menurunkan proses untuk menghindari hang atau kerusakan data. |
| OnCriticalFailure(String) |
Dipanggil ketika kunci mendeteksi kesalahan internal atau pola penggunaan ilegal yang menunjukkan kelemahan serius yang harus segera dilaporkan ke aplikasi dan/atau menurunkan proses untuk menghindari hang atau kerusakan data. |
| OnExclusiveLockReleasedAsync() |
Dipanggil setelah kunci eksklusif dilepaskan tetapi sebelum siapa pun memiliki kesempatan untuk memasukkan kunci. |
| OnUpgradeableReadLockReleased() |
Dipanggil ketika kunci baca yang dapat ditingkatkan tingkat atas dilepaskan, tidak meninggalkan kunci (tulis) yang tersisa. |
| ReadLockAsync(CancellationToken) |
Mendapatkan kunci baca, secara asinkron menunggu kunci jika tidak segera tersedia. |
| UpgradeableReadLockAsync(AsyncReaderWriterLock+LockFlags, CancellationToken) |
Mendapatkan kunci baca yang dapat ditingkatkan, secara asinkron menunggu kunci jika tidak segera tersedia. |
| UpgradeableReadLockAsync(CancellationToken) |
Mendapatkan kunci baca yang dapat ditingkatkan, secara asinkron menunggu kunci jika tidak segera tersedia. |
| WriteLockAsync(AsyncReaderWriterLock+LockFlags, CancellationToken) |
Mendapatkan kunci tulis, secara asinkron menunggu kunci jika tidak segera tersedia. |
| WriteLockAsync(CancellationToken) |
Mendapatkan kunci tulis, secara asinkron menunggu kunci jika tidak segera tersedia. |
Implementasi Antarmuka Eksplisit
| Nama | Deskripsi |
|---|---|
| IHangReportContributor.GetHangReport() |
Mengkontribusikan data untuk laporan macet. |
Berlaku untuk
Keamanan Thread
Jenis ini aman untuk semua anggota.