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 kustom yang dapat ditunggu 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 (baik kita menghasilkan atau tidak).
Konstruktor
| AsyncReaderWriterLock() |
Menginisialisasi instans baru kelas AsyncReaderWriterLock. |
| AsyncReaderWriterLock(Boolean) |
Menginisialisasi instans baru kelas AsyncReaderWriterLock. |
| AsyncReaderWriterLock(JoinableTaskContext, Boolean) |
Menginisialisasi instans baru kelas AsyncReaderWriterLock. |
Properti
| 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 penyelesaiannya menandakan 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 segala jenis kunci 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 penelepon 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 penelepon 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 penelepon memegang kunci baca yang dapat ditingkatkan. |
| IsWriteLockHeld |
Mendapatkan nilai yang menunjukkan apakah penelepon 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
| Complete() |
Menyebabkan permintaan kunci tingkat atas baru ditolak dan Completion tugas untuk beralih ke status selesai setelah kunci yang dikeluarkan telah dirilis. |
| Dispose() |
Kunci non-pemblokiran yang memungkinkan akses bersamaan, akses eksklusif, atau bersamaan dengan peningkatan ke akses eksklusif. |
| Dispose(Boolean) |
Buang sumber daya terkelola dan tidak terkelola yang dipegang oleh instans ini. |
| GetAggregateLockFlags() |
Mengembalikan agregat bendera kunci untuk semua kunci berlapis. |
| GetHangReport() |
Berkontribusi 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, ketika kunci dikeluarkan nanti. Jika kunci dikeluarkan segera ketika 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 saat kunci apa pun dilepaskan. |
| OnBeforeWriteLockReleased(Func<Task>) |
Mendaftarkan panggilan balik yang akan dipanggil ketika kunci tulis yang dipegang oleh penelepon 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 ada yang 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, 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
| IHangReportContributor.GetHangReport() |
Berkontribusi data untuk laporan macet. |
Berlaku untuk
Keamanan Thread
Jenis ini aman untuk semua anggota.