एक सेमाफोर num_of_sems
संकेतबाहु साथsemid
सेट और तो अगर मैं है एक sembuf*deleter_searchers_down
सेम: जब सेफफोर्स का एक सेट कम हो रहा है तो सभी एक बार में कमी हो जाते हैं या यह पहली विफलता पर अवरुद्ध करता है?
struct sembuf *deleter_searchers_down
= malloc(sizeof (*deleter_searchers_down) * num_of_sems);
for (i = 0; i < num_of_sems; ++i) {
(deleter_searchers_down + i)->sem_op = -1;
(deleter_searchers_down + i)->sem_num = i;
(deleter_searchers_down + i)->sem_flg = SEM_UNDO;
}
semop(semid, deleter_searchers_down, num_of_sems);
कॉल semop को एक ही बार में सेट में सभी संकेतबाहु कम करने का प्रयास करेंगे या एक बार यह प्रयास करता है यह अवरुद्ध कर देगा पहले सेमफोर को कम करने के लिए 0 और कुछ अन्य प्रक्रियाओं के बाद जारी रखें जो विशेष सेमफोर?
अच्छी तरह से सेमेफोर ठीक वही करते हैं जो आप कहते हैं, यानी, जब वे कम हो जाते हैं, यदि वे 0 हैं तो वे प्रक्रिया को अवरुद्ध करते हैं। – byrondrossos
सवाल ध्यान से plz पढ़ें - शून्य लोगों के सभी पर सेट और ब्लॉक के सभी को कम करने के प्रयास semop जाएगा या यह पहली बार पर अवरुद्ध कर देगा (पहले?) 0 –
आप विफलता पर तुरंत वापस जाने के लिए IPC_NOWAIT निर्दिष्ट कर सकते हैं का सामना करना पड़ा। देखें: http: //pubs.opengroup.org/onlinepubs/7908799/xsh/semop.html – RedX