Perbedaan Antara Mutex dan Event Perbedaan Antara

Anonim

Mutex vs Event

Di C #, ada banyak pilihan sinkronisasi threading yang berbeda. Dua yang lebih banyak digunakan adalah mutex dan event. Apa sebenarnya perbedaan antara keduanya? Mana yang lebih baik pilihannya?

Pilihan acara ini bisa memberi benang opsi untuk memblokir sampai acara disiarkan dengan demikian nama "event. "Sama saja dengan meletakkan sesuatu untuk tidur dan hanya membangunkannya saat ada sesuatu yang penting terjadi. Peristiwa tidak seperti mutexes karena mutex tidak memiliki opsi atau fungsi pensinyalan. Peristiwa tersebut mampu membersihkan sinyal begitu seseorang yang bisa menunggunya sudah terbangun. Bahkan API dapat mengizinkan opsi untuk memblokir hingga satu atau semua kejadian berbeda ditandai. Selain itu, acara adalah objek kernel. Mereka tidak "lebih ringan" dibandingkan dengan mutexes. Sebuah acara pada dasarnya adalah objek kernel yang memiliki dua negara bagian. Biasanya, sebuah acara menandakan datangnya sebuah acara dan terkadang bahkan akhir operasi I / O.

"Mutex" berarti Mutual Exclusion. Ini adalah bentuk mekanisme koordinasi scoped untuk sumber daya yang dibagi. Anggap saja sebagai bentuk transaksi. Anda tidak berkewajiban untuk menunggu meskipun Anda ingin mengakses beberapa sumber daya bersama (hanya jika orang lain sudah mengaksesnya) Anda memblokirnya. Sebuah mutex terdiri dari dua negara meskipun ada untuk memberlakukan pengecualian bersama. Ini untuk saat Anda ingin melindungi bentangan kode yang biasanya memperbarui sumber daya bersama dari bagian di mana mutex diklaim ke bagian yang akan dilepaskan. Hal ini menyebabkan fakta bahwa tidak ada thread lain yang bisa melewati bagian tersebut.

Orang yang telah mencoba mensimulasikan sebuah acara dengan bantuan mutex harus menghadapi masalah dimana segera setelah kunci tersebut diperoleh atau acara tersebut ditandai, orang tersebut menjaga orang lain keluar sampai kunci dilepaskan. Ini bukan semantik acara yang ditandai. Sebuah acara mungkin tetap diposting dan sebuah bentuk gerbang akan tersedia untuk semua pengujian thread jika tidak ada kunci. Mutex yang berkomitmen untuk sinkronisasi interprocess ada pada objek mode kernel. Acara yang dibuat untuk sinkronisasi multithreaded dengan satu metode ada pada objek mode pengguna.

Objek mutex terlalu berat dan terlalu umum. Benda acara jauh lebih ringan. Sinkronisasi mode pengguna digunakan dalam kebanyakan situasi karena alasan mengapa CPU tidak memberikan sedikit siklus CPU. Mutex sangat mirip dengan bagian kritis dan digunakan untuk menyinkronkan akses ke sumber daya yang dibagi. Acara memiliki fungsi yang sama sekali berbeda karena mereka terbiasa menyinkronkan tugas atau untuk pengelolaan penjadwalan tugas untuk beberapa orang.

Peristiwa lebih merupakan variabel kondisi, tidak seperti Mutex, yang lebih mirip monitor

di beberapa terminologi, atau bisa berupa semafor / mutex tradisional.

Ringkasan:

1. Pilihan acara ini bisa memberi benang opsi untuk memblokir sampai sebuah acara disiarkan, sehingga nama "event. "

2. Sebuah acara pada dasarnya adalah objek kernel yang memiliki dua negara bagian. Biasanya, sebuah acara menandakan datangnya sebuah acara dan terkadang bahkan akhir operasi I / O.

3. "Mutex" berarti Mutual Exclusion. Ini adalah bentuk mekanisme koordinasi scoped untuk sumber daya yang dibagi.

4. Mutex yang berkomitmen untuk sinkronisasi interprocess ada pada objek mode kernel. Acara yang dibuat untuk sinkronisasi multithreaded dengan satu metode ada pada objek mode pengguna.

5. Peristiwa lebih merupakan variabel kondisi, tidak seperti Mutex, yang lebih mirip monitor

di beberapa terminologi, atau dapat berupa semaphore / mutex tradisional.