मैं boost::interprocess::file_lock
का उपयोग करने के लिए सुनिश्चित करें कि फ़ाइलें जो प्रक्रिया P1
द्वारा एक निर्देशिका x
के लिए लिखा जाता प्रक्रिया P2
द्वारा पढ़ा नहीं कर रहे हैं, जब तक वे पूरी तरह से कर रहे हैं चाहते हैं। ऐसा करने के लिए, मैं P1
boost::interprocess::file_lock
के साथ फ़ाइलों को लॉक करना चाहता हूं, जबकि उन्हें लिख रहा है, और फिर इसे पूरा होने पर अनलॉक करना चाहते हैं। फिर P2
लॉक होने वाली किसी भी फाइल को छोड़कर (और वापस आ सकता है) छोड़ सकता है।बढ़ावा साथ एक बंद फ़ाइल बनाएँ :: इंटरप्रोसेस :: file_lock
मेरी समस्या यह है कि ऐसा लगता है कि boost::interprocess::file_lock
केवल आपको मौजूद फ़ाइलों को लॉक करने देता है। लेकिन अगर मैं पहली फ़ाइल बनाते हैं और फिर यह ताला, फिर वहाँ एक रेस स्थिति जहां है:
P1
फ़ाइलP2
फ़ाइल देखती है बनाता है और पढ़ने यहP1
फ़ाइल ताले शुरू होता हैP1
कुछ डेटाP2
कुछ डेटा पढ़ता है, अंत तक पहुंच जाता है, औरP1
के आउटपुट के केवल एक हिस्से के साथ समाप्त होता है।
तो मैं जो करना चाहता हूं वह एक फाइल बना रहा है और इसे जितनी जल्दी बनाया गया है उसे बंद कर दिया गया है। boost::interprocess::file_lock
का उपयोग करके ऐसा करने का कोई तरीका है?