क्या होता है जब आप WaitForSingleObject()
को CreateFile()
या _get_osfhandle()
के साथ बनाए गए हैंडल पर कॉल करते हैं तो क्या होता है?एक फ़ाइल हैंडल पर WaitForSingleObject?
कारणों के लायक समझा मैं WaitForSingleObject()
उपयोग करने के लिए एक हैंडल है कि मैं, _get_osfhandle(fd)
साथ बना लिया है जहां fd
_open()
के लिए एक नियमित कॉल से आता है पर इंतजार करना चाहते हैं नहीं है। क्या यह संभव है?
मैंने इसे अभ्यास में आजमाया है, और कुछ मशीनों पर यह अपेक्षित काम करता है (हैंडल हमेशा संकेतित स्थिति में है क्योंकि आप इससे अधिक डेटा पढ़ सकते हैं), और कुछ मशीनों पर WaitForSingleObject()
अनिश्चित काल तक अवरुद्ध हो जाएगा यदि आप इसे देते हैं ।
WaitForSingleObject()
के लिए एमएसडीएन पृष्ठ का कहना है कि केवल एक ही समर्थित चीजें हैं जो इसे नियंत्रित करती हैं "अधिसूचनाएं, कंसोल इनपुट, घटनाओं, स्मृति संसाधन अधिसूचनाओं, म्यूटेक्स, प्रक्रियाओं, सेमफोर, धागे और प्रतीक्षा करने योग्य टाइमर बदलती हैं।"
इसके अतिरिक्त, अगर मैं _get_osfhandle()
के बजायका उपयोग सीआरटी फ़ाइल डिस्क्रिप्टर पर करता तो यह अलग होगा?
ऑपरेशन अच्छी तरह से परिभाषित है। यह [GetOverlappedResult] (https://msdn.microsoft.com/en-us/library/windows/desktop/ms683209.aspx) के अंतर्गत प्रलेखित है। इसे कार्यान्वित करने के तरीके से निराश हो सकता है, और आमतौर पर उपयोगी नहीं हो सकता है। बेहतर विकल्प हैं। हालांकि, यह अच्छी तरह से परिभाषित है। – IInspectable