Monitor.Pulse(Object) 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.
Memberi tahu utas dalam antrean menunggu perubahan dalam status objek terkunci.
public:
static void Pulse(System::Object ^ obj);
public static void Pulse(object obj);
static member Pulse : obj -> unit
Public Shared Sub Pulse (obj As Object)
Parameter
- obj
- Object
Objek yang dinanti utas.
Pengecualian
Parameternya obj adalah null.
Utas panggilan tidak memiliki kunci untuk objek yang ditentukan.
Keterangan
Hanya pemilik kunci saat ini yang dapat memberi sinyal objek tunggu menggunakan Pulse.
Utas yang saat ini memiliki kunci pada objek yang ditentukan memanggil metode ini untuk memberi sinyal utas berikutnya sejalan untuk kunci. Setelah menerima denyut nadi, utas tunggu dipindahkan ke antrean siap. Ketika utas yang dipanggil Pulse melepaskan kunci, utas berikutnya dalam antrean siap (yang belum tentu utas yang berdebu) memperoleh kunci.
Important
Kelas Monitor tidak mempertahankan status yang menunjukkan bahwa metode telah dipanggil Pulse . Dengan demikian, jika Anda memanggil Pulse ketika tidak ada utas yang menunggu, utas Wait berikutnya yang memanggil blok seolah-olah Pulse belum pernah dipanggil. Jika dua utas menggunakan Pulse dan Wait untuk berinteraksi, ini dapat mengakibatkan kebuntuan. Berbeda dengan perilaku AutoResetEvent kelas: Jika Anda memberi sinyal AutoResetEvent dengan memanggil metodenya Set , dan tidak ada utas yang menunggu, AutoResetEvent sisa-sisa dalam keadaan tersinyal sampai utas WaitOnememanggil , , WaitAnyatau WaitAll. Rilis AutoResetEvent yang utas dan kembali ke status tidak ditandatangani.
Perhatikan bahwa objek yang disinkronkan menyimpan beberapa referensi, termasuk referensi ke utas yang saat ini memegang kunci, referensi ke antrean siap, yang berisi utas yang siap untuk mendapatkan kunci, dan referensi ke antrean tunggu, yang berisi utas yang menunggu pemberitahuan perubahan status objek.
Metode Pulse, PulseAll, dan Wait harus dipanggil dari dalam blok kode yang disinkronkan.
Untuk memberi sinyal beberapa utas, gunakan PulseAll metode .