संभावित रेस-स्थितियों के लिए साझा स्मृति के साथ साझा स्मृति का उपयोग करते समय, जहां एक प्रक्रिया इसे लिखती है और दूसरा इससे पढ़ता है, कुछ ध्यान में रखना है। पूर्व का उपयोग करने का एक संबद्ध जोखिम है, मान लीजिए कि दो प्रक्रियाएं इसका उपयोग कर रही हैं, इसे लिखने के लिए, दूसरा इसे पढ़ने के लिए, जो लिख रहा है वह असामान्य स्थिति के कारण मर जाता है, इसे पढ़ने की प्रक्रिया लटका या क्रैश हो सकती है।
साझा स्मृति को तेज़ (कम ओवरहेड, डेटा गुजरने की उच्च मात्रा) के रूप में समझा जा सकता है तो कतार। लेकिन दूसरी ओर कतारों के लिए, डेटा की कम मात्रा के साथ उच्च ओवरहेड (एक कतार बनाने के लिए स्थापित आदि की आवश्यकता होती है) की आवश्यकता होती है।
साझा स्मृति के साथ ऑनस यह है कि आपको थ्रेड सुरक्षित होने के लिए सिंक्रनाइज़ेशन लागू करना होगा। आईपीसी पर Beej द्वारा उत्कृष्ट लेख पर एक नज़र डालें।
कतारों का उपयोग करते समय, वे थ्रेड-सुरक्षित हैं, और अकेले नहीं, परिणाम के बावजूद कतार में संदेश आयोजित किए जाते हैं, मान लीजिए कि दो प्रक्रियाएं कतार का उपयोग कर रही हैं, जब एक प्रक्रिया इसे लिखती है (एक रूप में संदेश) और ऐसी प्रक्रिया जो किसी भी परिस्थिति में किसी दुर्घटना या असामान्य स्थिति के कारण मरने या मारने के लिए मर जाती है, वह संदेश अभी भी मौजूद है, दूसरी प्रक्रिया को फिर से शुरू करने पर कतार से पढ़ा जा सकता है, यानी कोई डेटा खो गया नहीं है।
यह दोनों के बीच का अंतर है।
उम्मीद है कि यह मदद करता है, सर्वश्रेष्ठ संबंध, टॉम।
डुप्लिकेट http://stackoverflow.com/questions/2275909/whats-the-advantage-of-queues-over-pipes-when-communicating-between-processes/2276157#2276157 – t0mm13b
डुप्ली नहीं। एक पाइप के बारे में है, एक शर्म के बारे में है। – kennytm