c - Usage of Mutex across processes -


ओएस: विंडोज़ भाषा: सी / सी ++

डिजाइन प्रक्रिया में एक mutex चर का उपयोग करने की मांग करता है इसकी उप प्रक्रियाएं यदि मैं एक प्रक्रिया में म्यूट एक्स बना रहा हूं, तो महत्वपूर्ण अनुभाग के उपलब्धि को देखने के लिए मुझे एक अन्य प्रक्रिया में म्यूट एक्स को खोलना होगा। म्यूटक्स को खोलने के लिए, मुझे मातृ प्रक्रिया में बनाए गए म्यूट एक्स के नाम को जानना होगा। मान लीजिए, यदि मैं म्यूटेक्स को अपने आवेदन नाम के रूप में रखता हूं। मैं म्यूट एक्स का नाम जान सकता था, क्योंकि यह ठीक है। हालांकि, अगर मैं अपने आवेदन के दूसरे उदाहरण को समानांतर में लोड करता हूं, तो एक भ्रम हो जाएगा।

क्या निम्नलिखित विचार बेहतर हो सकते हैं? प्रक्रिया आईडी के रूप में मुझे मूल प्रक्रिया में म्यूट एक्स नाम देने का एक विचार है इसलिए अब मुझे म्यूटक्स खोलने के लिए बाल प्रक्रिया / भव्य बाल प्रक्रिया से माता-पिता की प्रक्रिया आईडी लाने की आवश्यकता है। मुझे लगता है कि शानदार बाल प्रक्रिया से मूल प्रक्रिया आईडी लाने का कोई सीधा तरीका नहीं है इसलिए मुझे प्राप्य आईडी में हर एपीआई एपीआई (ट्रांसफार्मर परम) में पास करना होगा।

क्या कोई भी सरल तरीका सुझा सकता है, क्योंकि म्यूटक्स सबसे अधिक इस्तेमाल होता है .... मैं एक नौसिखिया हूँ। / P>

मुख्य विचार ठीक है, लेकिन आप शायद कुछ कार्यान्वयन के बदलाव कर सकते हैं।

एक के लिए, यदि आपके आवेदन में कई प्रक्रियाओं को सहयोग करना है, तो मुख्य "नियंत्रक" प्रक्रिया जो उप-प्रक्रियाओं को पैदा करती है, वह आसानी से अपने पीआईडी ​​को कमांड लाइन तर्क के माध्यम से पास कर सकती है। यदि उप-प्रक्रियाएं अपने बच्चों को भी पैदा होती हैं, तो वे उसी तंत्र के माध्यम से पीआईडी ​​को स्थानांतरित कर सकते हैं।

इस विचार को आगे ले जाने पर, आप पूरी तरह PID को छोड़ सकते हैं और कमांड लाइन तर्क बाल प्रक्रियाओं के लिए इस दृष्टिकोण का फायदा यह है कि माता-पिता और बच्चे की प्रक्रियाओं को दोनों में शामिल करने की आवश्यकता नहीं है, जो कि पीआईडी ​​से म्यूट एक्स नाम प्राप्त करते हैं। म्यूट एक्स नाम को पारित करके आप बाल प्रक्रियाओं को यह जानने के लिए छोड़ दें कि यह कैसे तैयार किया जाता है। इस दृष्टिकोण का उपयोग कई मुख्यधारा के अनुप्रयोगों द्वारा किया जाता है, उदा। Google Chrome।

और अंत में, आप शायद एक यादृच्छिक स्ट्रिंग (एक GUID हो सकता है?) को म्यूट एक्स नाम से जोड़कर बेहतर कर सकते हैं। मुझे नहीं लगता है कि कोई भी उसी नाम के साथ अपनी वैश्विक सिंक्रनाइज़ेशन ऑब्जेक्ट का नाम रखेगा, लेकिन कुछ अतिरिक्त सावधानी बरतने वाला नहीं होगा।

Comments