this tutorial के अनुसार एसिंक्रोनस डिस्क फ़ाइल io आसानी से प्रोग्रामिंग/एपीआई पॉइंट-ऑफ-व्यू से लिनक्स पर एआईओ का उपयोग करके हासिल किया जा सकता है। लेकिन इस ट्यूटोरियल से पहले और बाद में मैंने कई पदों और लेखों को पढ़ा था कि यह या तो नहीं किया जा सकता है या आपको पैच और कई अन्य मुद्दों के साथ libevent का उपयोग करना चाहिए। एक और चीज लूप थी जिसे मुझे सिग्नल के लिए इंतजार करना चाहिए था, लेकिन इस ट्यूटोरियल के आधार पर मैं एक कॉलबैक तंत्र का उपयोग कर सकता हूं, जो स्पष्ट रूप से उपयोग करने के लिए एआईओ को अधिक आसान बनाता है।लिनक्स डिस्क फ़ाइल एआईओ
अब, मैं एक लंबे शॉट द्वारा लिनक्स प्रोग्रामर नहीं हूं, मैं बस लिनक्स पर एसिंक्रोनस डिस्क फ़ाइल io का समर्थन करने के लिए एक सीधा तरीका ढूंढना चाहता हूं, इसे सीखें और इसे एसिंक डिस्क आईओ लाइब्रेरी में जोड़ें जो मुझे चाहिए व्यक्तिगत परियोजना। वर्तमान में मैं गैर-विंडोज प्लेटफार्मों पर विंडोज़ और आईओ कार्यकर्ता थ्रेड पर ओवरलैप्ड आईओ का उपयोग कर रहा हूं। चूंकि म्यूटिथ्रेड समाधान मुश्किल हो सकता है, इसलिए मैं इसे एआईओ के साथ लिनक्स पर बदलना चाहता था।
SO, इस ट्यूटोरियल में वर्णित एआईओ के साथ क्या गलत है? क्या यह प्रदर्शन है? क्या ऑपरेशन पर कोई प्रतिबंध है जिसे एआईओ का उपयोग करके किया जा सकता है?
पेज। मुझे कोई परवाह नहीं है कि कोड अन्य POSIX- अनुरूप प्लेटफॉर्म पर पोर्टेबल नहीं होगा, जब तक यह प्रमुख लिनक्स वितरण पर काम करता है। और मुझे लगता है कि नियमित डिस्क फ़ाइल io है।
धन्यवाद।
लिनक्स पर एआईओ समर्थन खराब है। वर्तमान में, एआईओ बफर कैश को बाईपास करेगा और सीधे डिस्क IO निष्पादित करेगा, जो प्रदर्शन को खराब तरीके से नुकसान पहुंचा सकता है। – lvella
क्या यह कार्यकर्ता-धागे समाधान से भी बदतर हो सकता है? – p00ya00
यह आपके उपयोग पर निर्भर करता है। यदि आप सब कुछ अनुक्रमिक रूप से एक बड़ी फ़ाइल को पढ़ने या लिखना है, तो यह अच्छा प्रदर्शन करेगा, लेकिन यदि आप यादृच्छिक रूप से छोटे हिस्सों तक पहुंचते हैं, तो यह निश्चित रूप से खराब होगा। वैसे, यदि आप POSIX इंटरफ़ेस 'aio_read() 'आदि का उपयोग करते हैं, तो यह कार्यकर्ता-थ्रेड समाधान आपको मिलता है। यह glibc द्वारा उपयोगकर्ता स्पेस पर थ्रेड्स को अवरुद्ध करने के साथ कार्यान्वित किया जाता है। – lvella