सॉकेट्स एक-से-एक हैं। यदि आप एक ही चीज़ को कई प्रक्रियाओं में भेजना चाहते हैं, तो आपको कई सॉकेट चाहिए। साझा मेमोरी के साथ, आपके कई पाठक हो सकते हैं, और कई लेखक भी।
सॉकेट संसाधन गहन हैं। प्रत्येक संदेश ओएस के माध्यम से जाता है। साझा मेमोरी के साथ, आप साझा मेमोरी को मैप करते हैं लेकिन एक बार अपने एप्लिकेशन की मेमोरी में और तब से यह आपके उपयोग के लिए है। हालाँकि, आपको अभी भी ओएस के माध्यम से जाने की ज़रूरत है जब आपने साझा मेमोरी का उपयोग किया था; निचे देखो।
सॉकेट्स सिंक्रनाइज़ किए जाते हैं (इसलिए जब तक आप यूडीपी का उपयोग नहीं करते हैं)। साझा की गई मेमोरी के साथ, आपको अन्य प्रक्रियाओं को बताने के लिए लगभग अनिवार्य रूप से कुछ अतिरिक्त तंत्र की आवश्यकता होती है कि साझा मेमोरी को पढ़ना या लिखना ठीक नहीं है। ऐसा न करें और आप दूषित स्मृति के साथ समस्याओं में चलेंगे। उदाहरण: मान लीजिए कि प्रक्रिया A एक साझा साझा मेमोरी को पढ़ना शुरू कर देती है, लेकिन रीड के माध्यम से बाहर की ओर स्वैप हो जाती है। प्रोसेस बी साझा मेमोरी के उसी हिस्से को लिखता है। जब प्रक्रिया A पुनः आरंभ करता है और साझा की गई मेमोरी को पढ़ना जारी रखता है, तो उसने जो पढ़ा है वह पुराने और नए डेटा का एक मिश्मश है। इसे रोकने के लिए, आप अभी भी ओएस के माध्यम से जाते हैं जब आप साझा मेमोरी का उपयोग कर रहे होते हैं।
नेटवर्क सॉकेट का उपयोग करने वाले अनुप्रयोगों के सॉकेट-आधारित सेट को परिवर्तित करना काफी आसान है। आप अपनी लैब में सभी मशीनों में प्रोसेसिंग को फैला सकते हैं, या फिर आगे बढ़ा सकते हैं। बस साझा मेमोरी के साथ ऐसा नहीं कर सकते। आप साझा मेमोरी-आधारित समाधान के साथ एक मशीन में बंद हैं।
सॉकेट्स का उद्देश्य कम मात्रा में डेटा, बड़ी मात्रा में डेटा के लिए साझा की गई मेमोरी है। विभिन्न समस्याओं को हल करने के लिए विभिन्न तंत्र मौजूद हैं।