मुझे लंबे समय से एक एसटीएलश कंटेनर की इच्छा थी जो मैं साझा मेमोरी सेगमेंट या मेमोरी मैप की गई फाइल में रख सकता था।कोई भी C++ के लिए एक अच्छा साझा स्मृति कंटेनर है?
मैंने एक कस्टम आवंटक का उपयोग माना है और नियमित एसटीएल कंटेनर को साझा मेमोरी सेगमेंट में रखने के लिए नया प्लेसमेंट माना है। (इस डीडीजे article की तरह)। समस्या यह है कि एसटीएल कंटेनर आंतरिक रूप से उनके पास स्मृति की ओर इशारा करते हैं। इसलिए, यदि साझा मेमोरी सेगमेंट या मेमोरी मैप की गई फ़ाइल किसी भिन्न बेस पते पर लोड हो जाती है (शायद बाद में चलाने पर, या दूसरी प्रक्रिया में), तो आंतरिक पॉइंटर्स अचानक अमान्य हो जाते हैं। जहां तक मैं समझ सकता हूं, कस्टम आवंटन दृष्टिकोण केवल तभी काम करता है जब आप हमेशा एक ही पते पर मेमोरी सेगमेंट को अपनी प्रक्रिया में मैप कर सकते हैं। कम से कम मेमोरी मैप की गई फाइलों के साथ, मुझे इस बात का बहुत अनुभव है कि अगर आप सिस्टम को इसे मैप करते हैं तो यह कहीं भी ऐसा नहीं लगता है।
मुझे यह कैसे करना है इस बारे में कुछ विचार हैं, लेकिन अगर मैं किसी और ने पहले से ही काम किया है (मैं आलसी हूं) तो मैं इससे बचना चाहूंगा।
मैं वर्तमान में चर्चा से बाहर निकल रहा हूं, क्योंकि सबसे अच्छी लॉकिंग रणनीति अत्यधिक एप्लिकेशन निर्भर है।
मैं व्यक्तिगत अनुभव का उपयोग करके इस उत्तर का समर्थन करता हूं। आईपीसी का उपयोग करके ऑनलाइन गाइड बनाया गया एक हवा! www.boost.org/doc/libs/1_36_0/doc/html/interprocess/quick_guide.html www.boost.org/doc/libs/1_36_0/doc/html/interprocess/sharedmemorybetweenprocesses.html#interprocess.sharedmemorybetweenprocesses.mapped_file – pestophagous