Bahasa

AsyncReaderWriterLock Kelas

Definisi

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.