Pthread_cond_wait niyə mutexə ehtiyac duyur?
Pthread_cond_wait niyə mutexə ehtiyac duyur?

Video: Pthread_cond_wait niyə mutexə ehtiyac duyur?

Video: Pthread_cond_wait niyə mutexə ehtiyac duyur?
Video: C++ : Waiting on a condition (pthread_cond_wait) and a socket change (select) simultaneously 2024, Bilər
Anonim

The mutex şərt dəyişəninin özünü qorumaq üçün istifadə olunur. Ona görə sən ehtiyac səndən əvvəl kilidləndi et gözləmək. Sonra şərt dəyişəninə siqnal verildikdə və ya yayımlandıqda, gözləmə siyahısındakı bir və ya bir neçə mövzu oyanacaq və mutex həmin mövzu üçün yenidən sehrli şəkildə kilidlənəcək.

Bununla əlaqədar olaraq, Pthread_cond_wait mutex kilidini açır?

The pthread_cond_wait () funksiyası şərt dəyişəni üzrə çağıran mövzunu bloklayır və kilidini açır əlaqəli mutex mutex . Zəng edən mövzu kilidlənməlidir mutex şərt dəyişənini gözləməzdən əvvəl. Funksiyadan qayıtdıqdan sonra mutex yenidən kilidlənir və zəng edən mövzuya məxsusdur.

Sonradan sual yaranır ki, mutex nə üçün lazımdır? Bu, bir anda yalnız bir ipin əsas kod parçasını icra etməsini təmin edir, bu da öz növbəsində məlumat strukturuna girişi məhdudlaşdırır. O, hər hansı bir CPU sıralamasından asılı olmayaraq hər iki ipin həmin yaddaşın tam və düzgün görünüşünə malik olmasını təmin edir. The mutex paralel proqramlaşdırma zamanı mütləq zərurətdir.

Yuxarıdakılardan əlavə, şərt dəyişənləri niyə mutex lazımdır?

The mutexdir qorumaq üçün istifadə olunur şərt dəyişəni özü. Ona görə sən ehtiyac səndən əvvəl kilidləndi et gözləmək. Sonra zaman şərt dəyişənidir gözləmə siyahısındakı mövzulardan birinə və ya bir neçəsinə siqnal verilir və ya yayımlanır olacaq oyanmaq və mutex olacaq bu mövzu üçün yenidən sehrli şəkildə kilidlən.

Şərt dəyişənlərinə nə üçün ehtiyacımız var?

Şərt dəyişənləri bir sıra iplərin qıdıqlanana qədər yatmasına icazə verin! Bir ipi və ya yatmış bütün ipləri qıdıqlaya bilərsiniz. Yalnız bir başlığı oyandırsanız, əməliyyat sistemi hansı ipin oyanacağına qərar verəcək.

Tövsiyə: