Mengapakah Pthread_cond_wait memerlukan mutex?
Mengapakah Pthread_cond_wait memerlukan mutex?

Video: Mengapakah Pthread_cond_wait memerlukan mutex?

Video: Mengapakah Pthread_cond_wait memerlukan mutex?
Video: Desy Ratnasari - Mengapa (Official Music Video) 2024, November
Anonim

The mutex digunakan untuk melindungi pembolehubah keadaan itu sendiri. sebab tu awak perlukan ia terkunci di hadapan anda buat menunggu. Kemudian apabila pembolehubah keadaan diisyaratkan atau disiarkan ke, satu atau lebih daripada benang dalam senarai menunggu akan dibangunkan dan mutex akan dikunci secara ajaib sekali lagi untuk benang itu.

Mengenai ini, adakah Pthread_cond_wait membuka kunci mutex?

The pthread_cond_wait () fungsi menyekat benang panggilan pada keadaan pembolehubah cond, dan membuka kunci yang berkaitan mutex mutex . Benang panggilan mesti dikunci mutex sebelum menunggu pembolehubah syarat. Sekembalinya daripada fungsi, the mutex sekali lagi dikunci dan dimiliki oleh utas panggilan.

Seterusnya, persoalannya ialah, mengapa mutex diperlukan? Ia memastikan bahawa hanya satu utas sedang melaksanakan sekeping kod utama pada satu masa, yang seterusnya mengehadkan akses kepada struktur data. Ia memastikan bahawa kedua-dua utas mempunyai pandangan penuh dan betul tentang memori itu tanpa mengira sebarang susunan semula CPU. The mutex adalah keperluan mutlak apabila melakukan pengaturcaraan serentak.

Selain di atas, mengapa pembolehubah keadaan memerlukan mutex?

The mutex adalah digunakan untuk melindungi pembolehubah keadaan sendiri. sebab tu awak perlukan ia terkunci di hadapan anda buat menunggu. Kemudian apabila pembolehubah keadaan ialah diisyaratkan atau disiarkan kepada, satu atau lebih rangkaian dalam senarai menunggu kehendak bangun dan mutex akan dikunci secara ajaib sekali lagi untuk benang itu.

Mengapa kita memerlukan pembolehubah keadaan?

Pembolehubah keadaan benarkan satu set benang tidur sehingga terdetik! Anda boleh menggelitik satu benang atau semua benang yang sedang tidur. Jika anda hanya membangunkan satu utas maka sistem pengendalian akan menentukan utas mana yang hendak dibangkitkan.

Disyorkan: