Perbezaan Antara Mutex dan Acara Perbezaan Antara

Anonim

Mutex vs Event

Dalam C #, terdapat banyak pilihan penyegerakan threading yang berbeza. Dua lagi digunakan secara meluas adalah mutex dan acara. Betapa sebenarnya perbezaan antara keduanya? Yang mana satu pilihan yang lebih baik?

Opsyen acara dapat memberi benang pilihan untuk menghalang sehingga acara disiarkan dengan demikian nama "acara. "Ia sama seperti meletakkan sesuatu untuk tidur dan hanya terbangun apabila sesuatu yang penting berlaku. Peristiwa tidak seperti mutexes kerana mutexes tidak mempunyai pilihan atau fungsi isyarat. Peristiwa mampu mengosongkan isyarat sebaik sahaja seseorang yang dapat menunggu di atasnya telah terbangun. Malah API boleh membenarkan pilihan untuk menyekat sehingga satu atau semua peristiwa yang berlainan akan memberi isyarat. Di samping itu, peristiwa adalah objek kernel. Mereka tidak "ringan" berbanding dengan mutexes. Satu peristiwa pada dasarnya adalah objek kernel yang mempunyai dua keadaan. Biasanya, suatu peristiwa menandakan kedatangan sesuatu peristiwa dan kadang kala berakhirnya operasi I / O.

"Mutex" bermaksud Pengecualian Mutual. Ia adalah satu bentuk mekanisme penyelarasan untuk sumber yang dikongsi. Fikirkannya sebagai satu bentuk transaksi. Anda tidak perlu menunggu walaupun anda mahu mengakses beberapa sumber yang dikongsi (hanya dalam contoh yang orang lain telah mengaksesnya) anda menyekat. Mutex terdiri daripada dua negeri walaupun ia wujud untuk melaksanakan pengecualian bersama. Ini adalah untuk apabila anda ingin melindungi kod regangan yang biasanya mengemas kini sumber yang dikongsi dari bahagian di mana mutex dituntut ke bahagian di mana ia akan dibebaskan. Ini membawa kepada hakikat bahawa tiada benang lain boleh melalui bahagian itu.

Orang yang telah mencuba untuk mensimulasikan sesuatu acara dengan bantuan mutex terpaksa menghadapi masalah di mana sebaik sahaja kunci itu diperoleh atau peristiwa itu memberi isyarat, orang itu menyimpan orang lain keluar sehingga kunci dilepaskan. Ini bukan semantik peristiwa yang dinyanyikan. Satu acara boleh disiarkan dan satu bentuk pintu akan disediakan untuk semua ujian thread sekiranya tidak mempunyai sebarang kunci. Mutex berkomited untuk menyegerakkan antara proses dalam objek mod kernel. Peristiwa yang dibuat untuk penyegerakan multithreaded di bawah satu kaedah adalah dalam objek mod pengguna.

Objek Mutex terlalu berat dan terlalu umum. Objek acara lebih ringan. Penyegerakan mod pengguna digunakan dalam kebanyakan situasi disebabkan sebab ia memberikan kitaran CPU kurang. Mutex adalah sangat seperti seksyen kritikal dan digunakan untuk menyegerakkan akses kepada sumber yang dikongsi. Peristiwa mempunyai fungsi yang sama sekali berbeza kerana ia digunakan untuk menyegerakkan tugas atau pengurusan penjadualan tugas untuk sesetengah orang.

Peristiwa lebih banyak daripada pembolehubah keadaan, tidak seperti Mutex, yang lebih mirip dengan

monitor dalam beberapa istilah, atau ia boleh menjadi bentuk semaphore / mutex tradisional.

Ringkasan:

1. Opsyen acara dapat memberi benang pilihan untuk menghalang sehingga acara disiarkan, dengan demikian nama "acara. "

2. Satu peristiwa pada dasarnya adalah objek kernel yang mempunyai dua keadaan. Biasanya, suatu peristiwa menandakan kedatangan sesuatu peristiwa dan kadang kala berakhirnya operasi I / O.

3. "Mutex" bermaksud Pengecualian Mutual. Ia adalah satu bentuk mekanisme penyelarasan untuk sumber yang dikongsi.

4. Mutex berkomited untuk menyegerakkan antara proses dalam objek mod kernel. Peristiwa yang dibuat untuk penyegerakan multithreaded di bawah satu kaedah adalah dalam objek mod pengguna.

5. Peristiwa lebih banyak daripada pembolehubah keadaan, tidak seperti Mutex, yang lebih mirip dengan

monitor dalam beberapa istilah, atau ia boleh menjadi bentuk tradisional semaphore / mutex.