कहानी:
कुछ दिन पहले मैं फ़ाइल एक्सचेंज के आधार पर अंतर-प्रक्रिया संचार के बारे में सोच रहा था। कहें प्रक्रिया ए अपने काम के दौरान कई फाइलें बनाता है और प्रक्रिया बी बाद में इन फ़ाइलों को पढ़ता है। यह सुनिश्चित करने के लिए कि सभी फाइलें सही तरीके से लिखी गई हैं, एक विशेष फ़ाइल बनाना सुविधाजनक होगा, जो अस्तित्व सिग्नल करेगा कि सभी परिचालन किए गए थे।इंटर-प्रोसेस फ़ाइल एक्सचेंज: दक्षता और दौड़ की स्थिति
सरल कार्यप्रवाह:
प्रक्रिया एक फ़ाइल "file1.txt"
प्रक्रिया एक फ़ाइल "file2.txt"
प्रक्रिया एक बनाता है फ़ाइल "processA.ready"
प्रक्रिया बी फ़ाइल जब तक इंतज़ार कर रहा है बनाता है बनाता है "processA.ready" प्रकट होता है और फिर फ़ाइल 1 और फ़ाइल 2 पढ़ता है।
संदेह:
फ़ाइल संचालन विशेष रूप से फ़ाइल सबसिस्टम द्वारा, ऑपरेटिंग सिस्टम द्वारा किया जाता है। चूंकि कार्यान्वयन यूनिक्स, विंडोज या मैकोज़ में भिन्न हो सकते हैं, इसलिए मैं फ़ाइल एक्सचेंज इंटर-प्रोसेस संचार की विश्वसनीयता के बारे में अनिश्चित हूं। यहां तक कि यदि ओएस इस स्थिरता की गारंटी देगा, तो जावा में जेआईटी कंपाइलर जैसी चीजें हैं, जो प्रोग्राम निर्देशों को पुन: व्यवस्थित कर सकती हैं।
प्रश्न:
1. क्या ऑपरेटिंग सिस्टम में फ़ाइल संचालन पर कोई वास्तविक विनिर्देश हैं?
2. क्या जेआईटी को वास्तव में एक प्रोग्राम थ्रेड के लिए फ़ाइल ऑपरेशन प्रोग्राम निर्देशों को पुन: व्यवस्थित करने की अनुमति है?
3. क्या आजकल इंटरचेंज संचार के लिए फ़ाइल एक्सचेंज एक प्रासंगिक विकल्प है या टीसीपी/HTTP/आदि चुनने के लिए यह बिना शर्त है?
बड़ी समस्या आप होगा डिस्क संचालन की कैशिंग है। – user3344003
यदि मैं आप थे, तो मैं HTTP लागू करूंगा। प्रक्रियाओं को सिंक्रनाइज़ करने और किसी प्रकार के ईवेंट श्रोताओं को लिखने की आवश्यकता नहीं है। और इन प्रक्रियाओं को भविष्य में अलग-अलग मशीनों में अलग करना आसान होगा। – gkiko
@gkiko वास्तव में मैंने पहले ही यह कर लिया है :) – AdamSkywalker