Contoh dan Penjelasan Mutex
Mutexes, atau objek pengecualian bersama, menyediakan mekanisme untuk mengawal akses kepada sumber kongsi dalam persekitaran berbilang benang. Memahami operasi mereka boleh mencabar, kerana sintaksnya mungkin kelihatan berlawanan dengan intuisi pada pandangan pertama.
Sintaks Mutex
Sintaks pthread_mutex_lock(&mutex1) mencadangkan bahawa mutex sendiri sedang dikunci. Walau bagaimanapun, bukan mutex tetapi kawasan kod yang dilindungi olehnya yang dikunci. Ini menghalang urutan lain daripada mengakses kod semasa ia dilaksanakan oleh urutan semasa.
Penggunaan Mutex dan Atribusi Kunci
Benang menentukan status terkunci kod dengan memerhati pagar ingatan yang ditubuhkan apabila memperoleh dan melepaskan mutex. Pagar ingatan memastikan bahawa perubahan yang dibuat pada ingatan oleh satu utas dapat dilihat oleh utas lain tepat pada masanya.
Bahagian Kritikal
Bahagian kritikal tidak sama dengan mutex. Ia hanya tersedia dalam Windows dan merujuk kepada kawasan kod yang dilindungi oleh mutex. Bahagian kritikal sendiri tidak menyediakan kawalan akses serentak.
Contoh Mutex Paling Mudah
Kod berikut menunjukkan penggunaan asas mutex:
Analogi Mutex
Untuk membantu menggambarkan konsep, pertimbangkan telefon gerai tempat berbilang orang cuba membuat panggilan. Pemegang pintu mewakili mutex. Hanya orang yang memegang pemegang pintu (mutex terkunci) boleh mengakses telefon (laksanakan kod yang dilindungi). Sebaik sahaja mereka melepaskan pemegang pintu (buka kunci mutex), orang lain boleh memperolehnya.
Dengan memahami konsep mutex dan menggunakannya dengan berkesan, pembangun boleh memastikan sumber yang dikongsi diakses dengan cara yang selamat dan disegerakkan, menghalang rasuah data dan keadaan bangsa dalam persekitaran berbilang benang.
Atas ialah kandungan terperinci Apakah Mutex dan Bagaimana Ia Berfungsi dalam Persekitaran Berbilang Thread?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!