Mutex vs Acara
Di C #, ada banyak opsi sinkronisasi threading berbeda. Dua yang lebih banyak digunakan adalah mutex dan event. Apa sebenarnya perbedaan antara keduanya? Pilihan mana yang lebih baik?
Opsi acara dapat memberi untaian opsi untuk memblokir hingga acara disiarkan sehingga nama "acara." Itu sama dengan meletakkan sesuatu untuk tidur dan hanya membangunkannya ketika sesuatu yang penting terjadi. Acara tidak seperti mutex karena mutex tidak memiliki opsi atau fungsi pensinyalan. Acara dapat menghapus sinyal begitu seseorang yang bisa menunggu telah terbangun. Bahkan API dapat mengizinkan opsi untuk memblokir hingga satu atau semua peristiwa yang berbeda ditandai. Selain itu, acara adalah objek kernel. Mereka tidak "lebih ringan" dibandingkan dengan mutex. Suatu peristiwa pada dasarnya adalah objek kernel yang memiliki dua status. Biasanya, suatu peristiwa menandakan kedatangan suatu peristiwa dan kadang-kadang bahkan akhir dari operasi I / O.
"Mutex" adalah singkatan dari Mutual Exclusion. Ini adalah bentuk mekanisme koordinasi untuk lingkup sumber daya yang dibagikan. Anggap saja sebagai bentuk transaksi. Anda tidak diwajibkan untuk menunggu walaupun Anda ingin mengakses beberapa sumber daya bersama (hanya dalam hal orang lain sudah mengaksesnya) Anda memblokir. Suatu mutex terdiri dari dua keadaan meskipun ia ada untuk memberlakukan pengecualian bersama. Ini untuk ketika Anda ingin melindungi hamparan kode yang biasanya memperbarui sumber daya bersama dari bagian di mana mutex diklaim ke bagian di mana ia akan dirilis. Ini mengarah pada fakta bahwa tidak ada utas lain yang dapat melewati bagian ini.
Orang-orang yang telah mencoba mensimulasikan suatu peristiwa dengan bantuan sebuah mutex harus menghadapi masalah di mana segera setelah kunci diperoleh atau peristiwa itu ditandai, orang tersebut menjaga orang lain keluar sampai kunci dilepaskan. Ini bukan semantik dari suatu peristiwa yang ditandai. Suatu peristiwa dapat tetap diposting dan suatu bentuk gerbang akan tersedia untuk semua pengujian utas dalam acara yang tidak memiliki kunci. Mutex berkomitmen untuk sinkronisasi antarproses berada di objek mode kernel. Acara yang dibuat untuk sinkronisasi multithreaded dalam satu metode berada di objek mode pengguna.
Objek mutex terlalu berat dan terlalu umum. Objek acara jauh lebih ringan. Sinkronisasi mode pengguna digunakan dalam sebagian besar situasi karena alasan yang memberikan siklus CPU lebih sedikit. Mutex sangat mirip dengan bagian kritis dan digunakan untuk menyinkronkan akses ke sumber daya yang dibagikan. Acara memiliki fungsi yang sama sekali berbeda karena mereka digunakan untuk menyinkronkan tugas atau untuk manajemen penjadwalan tugas untuk beberapa orang.
Acara lebih merupakan variabel kondisi, tidak seperti Mutex, yang lebih mirip a
memantau dalam beberapa terminologi, atau dapat berupa semaphore / mutex tradisional.
Ringkasan:
1.Opsi acara dapat memberikan utas opsi untuk memblokir hingga suatu acara disiarkan, dengan demikian nama "acara".
2. Suatu peristiwa pada dasarnya adalah objek kernel yang memiliki dua status. Biasanya, suatu peristiwa menandakan kedatangan suatu peristiwa dan kadang-kadang bahkan akhir dari operasi I / O.
3. "Mutex" adalah singkatan dari Mutual Exclusion. Ini adalah bentuk mekanisme koordinasi untuk lingkup sumber daya yang dibagikan.
4.Mutex yang berkomitmen untuk sinkronisasi antarproses ada dalam objek mode kernel. Acara yang dibuat untuk sinkronisasi multithreaded dalam satu metode berada di objek mode pengguna.
5. Acara lebih merupakan variabel kondisi, tidak seperti Mutex, yang lebih seperti a
memantau dalam beberapa terminologi, atau itu bisa menjadi bentuk tradisional semaphore / mutex.