में विंडोज रैम-आधारित साझा मेमोरी समाधान की तलाश में मुझे एक ऐसी स्थिति का सामना करना पड़ रहा है जहां मुझे एक प्रक्रिया से दूसरे में कई सैकड़ों मेगाबाइट मेमोरी तक पहुंचने की आवश्यकता है। अभी मैं इसे फाइलों के माध्यम से कर रहा हूं और यह बहुत धीमी है। मुझे लगता है कि इसे तेज़ी से बनाने के लिए, उन फ़ाइलों को सीधे रैम पर लिखा जाना चाहिए और किसी अन्य प्रक्रिया से सुलभ होना चाहिए। कोई फैंसी सिंक्रनाइज़ेशन की आवश्यकता नहीं है। एक प्रक्रिया साझा स्मृति वस्तुओं को बनाएगी और उन्हें डेटा के साथ भर जाएगी। दूसरी प्रक्रिया उन्हें पढ़ और हटा देगी। हालांकि मैंने एक त्वरित शोध किया है और ऐसा लगता है कि आप विंडोज़ में रैम में मेमोरी साझा नहीं कर सकते हैं - साझा मेमोरी को किसी फ़ाइल या पेजिंग फ़ाइल द्वारा समर्थित किया जाता है। बूस्ट :: इंटरप्रोसेस के दस्तावेज़ इसकी पुष्टि करते हैं। गति तब होती है जब साझा स्मृति कार्यान्वयन अभी भी डिस्क का उपयोग करता है? क्या कोई सी ++ लाइब्रेरी है जो रैम-आधारित साझा मेमोरी का उपयोग करती है?सी ++
संपादित करें: 1. बढ़ावा से :: इंटरप्रोसेस डॉक्स: "के रूप में ऑपरेटिंग सिस्टम स्मृति सामग्री के साथ फ़ाइल सामग्री सिंक्रनाइज़ करने के लिए है, स्मृति-मैप की गई फ़ाइलों के रूप में तेजी से साझा स्मृति के रूप में नहीं कर रहे हैं मैं कुछ आगे पढ़ने बनाया " 2. http://msdn.microsoft.com/en-us/library/ms810613.aspx से: " एक स्मृति-मैप की गई फ़ाइल को एक साथ एक से अधिक अनुप्रयोगों द्वारा मैप किया जा सकता है। यह विंडोज एनटी में सीधे डेटा साझा करने के लिए दो या दो से अधिक प्रक्रियाओं के लिए एकमात्र तंत्र का प्रतिनिधित्व करता है। "
विंडोज़ में सभी मेमोरी किसी फ़ाइल द्वारा समर्थित है, जैसे वर्चुअल मेमोरी ऑपरेटिंग सिस्टम। और फ़ाइलों को स्मृति, फ़ाइल सिस्टम कैश द्वारा समर्थित किया जाता है। जिससे यह संभव हो जाता है कि आपको स्पीड-अप दिखाई नहीं देगा। यह रैम बस गति, ~ 5 जीबी/सेकंड डीडीआर 2 के लिए स्थानांतरित होना चाहिए। –
@ हंस: क्या आप कह रहे हैं कि साझा मेमोरी का उपयोग करके मुझे डेटा फ़ाइलों को सीधे डेटा फ़ाइलों की तुलना में कोई गति-अप नहीं मिलेगा? – andriej
शायद बूस्ट विंडोज साझा मेमोरी आपकी गली होगी। यह निरंतर है, अगर आप वास्तव में इसका मतलब है। http://www.boost.org/doc/libs/1_35_0/doc/html/boost/interprocess/windows_shared_memory.html –