2014-05-19 5 views
7

जीएचसी रनटाइम आंतरिक पर कुछ कागजात का उल्लेख है कि यह पहचानने के लिए एपोल/क्यूके/पोल का उपयोग करता है कि फाइल डिस्क्रिप्टर पढ़ने/लिखने के लिए तैयार है या नहीं।फ़ाइल I/O के साथ जीएचसी रनटाइम सौदे कैसे करता है?

मैं समझ सकता हूं कि यह सॉकेट I/O के लिए कैसे किया जाता है। लेकिन डिस्क फ़ाइल के उपयोग के बारे में क्या? सर्वेक्षण syscall सामान्य फ़ाइलों के साथ काम नहीं करता है, केवल सॉकेट I/O के साथ; सच?

ही एकमात्र विकल्प मैं यहाँ कल्पना कर सकते हैं अवरुद्ध syscalls के लिए एक धागा पूल उपयोग कर रहा है, एक धागा प्रति अनुरोध ...

+0

पॉज़िक्स प्लेटफ़ॉर्म (जैसे लिनक्स, ओएसएक्स और बीएसडी) पर एक वर्णनकर्ता एक छोटा पूर्णांक होता है, और या तो फ़ाइल, पाइप, सॉकेट या कुछ अलग हो सकता है। और वे सभी मतदान के समान ज्यादातर समर्थन कार्यों का समर्थन करते हैं। –

+2

@ जोआचिमपिलबोर्ग डिस्क फ़ाइल एफडी पर मतदान हमेशा वापस आ जाएगा कि यह आईओ के लिए तैयार है, जबकि वास्तव में यह अवरुद्ध होगा। – user3489275

+1

@ जोचिमपिलबोर्ग मुझे खेद है लेकिन वह बीएस है। कोई फर्क नहीं पड़ता कि आप कितना पढ़ने की कोशिश कर रहे हैं, यह किसी भी तरह से ब्लॉक कर सकता है (यहां तक ​​कि O_NONBLOCK के साथ)। – user3489275

उत्तर

3

unthreaded आरटीएस में, पूरे क्रम रोकेंगे। थ्रेडेड आरटीएस में, यह थ्रेड पूल के माध्यम से इस तरह की सुरक्षित विदेशी कॉल करेगा, इसलिए क्षमता अवरुद्ध नहीं होगी।

संबंधित मुद्दे