Perbezaan antara mutex dan acara

Perbezaan antara mutex dan acara

Mutex vs Event

Di C#, terdapat banyak pilihan penyegerakan threading yang berbeza. Dua lagi digunakan secara meluas adalah mutex dan acara. Apa sebenarnya perbezaan antara kedua -dua ini? Yang mana satu pilihan yang lebih baik?

Pilihan Acara dapat memberikan benang pilihan untuk menyekat sehingga acara disiarkan sehingga nama "Acara."Ia sama seperti meletakkan sesuatu untuk tidur dan hanya membangunkannya apabila sesuatu yang penting berlaku. Peristiwa tidak seperti mutexes kerana mutexes tidak mempunyai pilihan atau fungsi isyarat. Acara dapat membersihkan isyarat sebaik sahaja seseorang yang dapat menunggu di atasnya telah bangun. Malah API dapat membenarkan pilihan untuk menyekat sehingga satu atau semua peristiwa yang berbeza ditandatangani. Di samping itu, peristiwa adalah objek kernel. Mereka tidak "lebih ringan" berbanding dengan mutexes. Acara pada dasarnya adalah objek kernel yang mempunyai dua negeri. Biasanya, peristiwa menandakan kedatangan acara dan kadang -kadang walaupun berakhirnya operasi I/O.

"Mutex" bermaksud pengecualian bersama. Ia adalah satu bentuk mekanisme penyelarasan skop untuk sumber yang dikongsi bersama. Fikirkan ia sebagai satu bentuk urus niaga. Anda tidak bertanggungjawab untuk menunggu walaupun anda ingin mengakses beberapa sumber yang dikongsi (hanya dalam keadaan yang orang lain telah mengaksesnya) anda menyekat. Mutex terdiri daripada dua negeri walaupun wujud untuk melaksanakan pengecualian bersama. Ini adalah apabila anda ingin melindungi kod yang biasanya mengemas kini sumber bersama dari bahagian di mana mutex dituntut ke bahagian yang akan dikeluarkan. Ini membawa kepada hakikat bahawa tidak ada benang lain yang dapat melalui bahagian.

Orang yang telah cuba mensimulasikan peristiwa dengan bantuan mutex terpaksa menghadapi masalah di mana sebaik sahaja kunci diperoleh atau acara itu ditandatangani, orang itu menjaga orang lain sehingga kunci dikeluarkan. Ini bukan semantik peristiwa yang ditandakan. Acara mungkin terus diposting dan satu bentuk pintu akan tersedia untuk semua ujian thread sekiranya tidak mempunyai kunci. Mutex komited untuk penyegerakan interproses berada dalam objek kernel-mode. Peristiwa yang dibuat untuk penyegerakan multithreaded di bawah satu kaedah berada dalam objek mod pengguna.

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

Peristiwa lebih banyak pemboleh ubah keadaan, tidak seperti mutex, yang lebih seperti a
Pantau dalam beberapa istilah, atau ia boleh menjadi bentuk tradisional semaphore/mutex.

Ringkasan:

1.Pilihan Acara dapat memberikan benang pilihan untuk menyekat sehingga acara disiarkan, oleh itu nama "Acara."

2.Acara pada dasarnya adalah objek kernel yang mempunyai dua negeri. Biasanya, peristiwa menandakan kedatangan acara dan kadang -kadang walaupun berakhirnya operasi I/O.

3."Mutex" bermaksud pengecualian bersama. Ia adalah satu bentuk mekanisme penyelarasan skop untuk sumber yang dikongsi bersama.

4.Mutex komited untuk penyegerakan interproses berada dalam objek kernel-mode. Peristiwa yang dibuat untuk penyegerakan multithreaded di bawah satu kaedah berada dalam objek mod pengguna.

5.Peristiwa lebih banyak pemboleh ubah keadaan, tidak seperti mutex, yang lebih seperti a
Pantau dalam beberapa istilah, atau ia boleh menjadi bentuk tradisional semaphore/mutex.