आदेश "मूल्य" sem_init में समझने के लिए (sem_t * sem, pshared int, अहस्ताक्षरित int मान)
मुझे लगता है कि हम कैसे हम कोड में सेमाफोर का उपयोग के साथ सिंक्रनाइज़ की जरूरत है: जब हम चाहते हैं सेमफोर के लिए प्रतीक्षा करने के लिए, हम sem_wait (& mutex) को कॉल करते हैं, और यदि हम अन्य धागे 'sem_wait (& mutex) चलाने के लिए अधिसूचित करना चाहते हैं, तो हमें कॉल sem_post (& mutex) की आवश्यकता है। लेकिन समस्या यह है कि अगर कोई अन्य थ्रेड sem_post (& mutex) को पहले (सिस्टम प्रारंभिकरण में) पर कॉल करता है, तो sem_wait (& mutex) क्या करना चाहिए? इसे अन्य धागे के लिए पास या इंतजार करना चाहिए sem_post (& mutex) पर कॉल करें? उत्तर sem_init() में "मान" में है। यदि यह शून्य है, तो इसका मतलब है कि हमें sem_post() को एक बार कॉल करने के लिए कुछ अन्य धागे की प्रतीक्षा करनी होगी, फिर यह पास हो सकती है। यदि यह एक है, तो पहली बार sem_wait() के लिए कॉल करने पर एक बार गुजर जाएगा, लेकिन दूसरी बार sem_wait() प्रतीक्षा करेगा (यदि उनके दौरान कोई sem_post नहीं कहा जाता है)। तो sem_init() में मान का अर्थ है कि कितनी बार हम sem_wait() को वास्तव में बिना किसी sem_post() के इंतजार किए निष्पादित कर सकते हैं। और हम के रूप में sem_wait() विचार कर सकते हैं: /गतिरोध इंतजार कर रहे हैं जब तक मूल्य एक और धागा/
जबकि (मूल्य < = 0) {}
value-- से बड़ा से 0 करने के लिए बदल गया है ;
और जैसा कि sem_post() पर विचार करें:
मूल्य ++;
स्रोत
2015-07-22 08:05:34
इसका मतलब क्या है "मूल्य के साथ"?क्या इसका मतलब यह है कि यह लॉक/अनलॉक है? क्या यह सेमफोर की संभावित पूछताछ की संख्या निर्दिष्ट करता है? – SomethingSomething