2012-07-13 18 views
7

पर लिनक्स सर्वेक्षण ईवेंट का कारण दो लिनक्स प्रक्रियाएं उसी/dev/shm/साझा स्मृति फ़ाइल को खोलती हैं और mmap और सामान्य स्मृति के रूप में इसका उपयोग करती हैं। प्रश्न: दूसरी प्रक्रिया को "जागृत" करने के लिए एक प्रक्रिया के लिए सबसे आसान और सबसे अच्छा तरीका क्या है यह सूचित करने के लिए कि उसे स्मृति में देखना चाहिए? उदाहरण के लिए, क्या कोई प्रक्रिया अन्य प्रक्रिया के फ़ाइल डिस्क्रिप्टर के लिए एक मतदान() ईवेंट का कारण बन सकती है? समाधान को पोर्टेबल होने की आवश्यकता नहीं है लेकिन मैं इसे सरल बनाना चाहता हूं।साझा स्मृति फ़ाइल

उत्तर

2

यही कारण है कि पॉज़िक्स में हालत चर हैं।

साझा किए गए मेमोरी क्षेत्र में साझा किए गए POSIX स्थिति चर और उसके संबंधित mutex को परिभाषित करें।

फिर एक थ्रेड कंडीशन वैरिएबल पर प्रतीक्षा करें और अन्य सिग्नल वेरिएबल इवेंट सिग्नल करें जब यह अन्य धागे को स्मृति में देखना चाहता है।

हालत चर पर वेब पर बहुत सारी सामग्री है। यहां एक बहुत अच्छा छोटा है: https://computing.llnl.gov/tutorials/pthreads/#ConditionVariables

0

आप इसे हल करने के लिए एक सेमफोर (पीओएसआईक्स नाम सेमाफोर) का उपयोग करने पर विचार कर सकते हैं।

एक सरल उदाहरण, साझा स्मृति का उपयोग और POSIX सेमाफोर कड़ी में है (उदाहरण के लिए यह सिस्टम वी में है, लेकिन आप भी POSIX के साथ उपयोग कर सकते हैं में), How can 2 processes talk to each other without pipe()?

संबंधित मुद्दे