में एक द्विआधारी सेमाफोर आरंभ कैसे man page यह प्रतीत होता है कि आप और मान एक करने के लिए एक सेमाफोर आरंभ भले ही: एकाधिक कॉल के साथसी
sem_init(&mySem, 0, 1);
यह अभी भी एक मूल्य के वृद्धि की जा सकती है 1 से अधिक
sem_post(&mySem);
लिए लेकिन इस code example में टिप्पणी अलग तरह से सोचने लगता है:
sem_init(&mutex, 0, 1); /* initialize mutex to 1 - binary semaphore */
सी में सख्ती से बाइनरी सेमफोर शुरू करना संभव है?
नोट: इस मामले में एक mutex का उपयोग करने के बजाय ऐसा करने का कारण sem_post और sem_wait को विभिन्न धागे द्वारा बुलाया जा सकता है।
ग्रेट धन्यवाद! मैं बहुत कुछ कर रहा था। – austinmarton
'mysem_wait' में 'while' लूप का बिंदु क्या है? 'Pthread_cond_wait' सिग्नल होने के बाद म्यूटेक्स को पुनः प्राप्त करने के बाद से' ''कथन का काम आसान नहीं होगा और' pthread_cond_signal' केवल एक थ्रेड को स्थिति पर इंतजार कर रहा है? –
@ बिलडेरोस: हालत परिवर्तनीय नकली वेकअप और चुराए गए जागरूकता के अधीन हैं। यदि आप किसी शर्त की जांच करना चाहते हैं तो आपको ** ** लूप में उनका उपयोग करना होगा। –