मैं एक प्रोग्राम बना रहा हूं जो दूरस्थ मशीन से संदेश प्राप्त करेगा और संदेशों को डिस्क पर फ़ाइल में लिखने की आवश्यकता है। मुझे जो कठिनाई मिल रही है वह इस तथ्य में निहित है कि इस कार्यक्रम का उद्देश्य पुस्तकालय के प्रदर्शन का परीक्षण करना है जो संदेशों को प्राप्त करता है और इसलिए, मुझे यह सुनिश्चित करना होगा कि डिस्क पर संदेश लिखना पुस्तकालय के प्रदर्शन को प्रभावित न करे । लाइब्रेरी संदेश को कॉलबैक फ़ंक्शन के माध्यम से प्रोग्राम में भेजती है। एक और कठिनाई यह है कि समाधान मंच को स्वतंत्र होना चाहिए।प्लेटफॉर्म स्वतंत्र एसिंक्रोनस फ़ाइल को फ़ाइल को कैसे कार्यान्वित करें?
मेरे पास कौन से विकल्प हैं?
मैं के बारे में सोचा है:
boost:asio
का उपयोग कर फाइल करने के लिए लिखने के लिए, लेकिन यह (this दस्तावेज़ देखें) लगता है कि फाइल करने के लिए अतुल्यकालिक लिखने इस लायब्रेरी के लिए Windows विशिष्ट भाग में है - तो यह नहीं हो सकता उपयोग किया गया।- संदेश कतार बनाने के लिए
boost::interprocess
का उपयोग करके this documentation इंगित करता है कि संदेश 3 भेजे जा सकते हैं, और संदेश के कतार पूर्ण होने पर सभी विधियों को ब्लॉक (निहित या नहीं) को अवरुद्ध करने की आवश्यकता होगी, जिसे मैं नहीं कर सकता जोखिम। - कॉलबैक फ़ंक्शन से डेक को धक्का देने के लिए
std::deque<MESSAGES>
बनाना, और फ़ाइल (अलग थ्रेड पर) लिखते समय संदेशों को पॉप आउट करें, लेकिन एसटीएल कंटेनर not guaranteed to be thread-safe हैं। मैं धक्का दे रहा था, और डेक कर रहा था, डेक लेकिन हम लगातार संदेशों के बीच 47 माइक्रोसॉन्ड के बारे में बात कर रहे हैं, इसलिए मैं ताले से पूरी तरह से बचना चाहता हूं।
क्या किसी के पास संभावित समाधानों पर कोई और विचार है?
47micros किस संदेश के बीच? क्या यह रिमोट मशीन कैडेंस है? –