पर लिखते समय() भेजने के बजाय लिखने() के प्रदर्शन का उपयोग करने का प्रदर्शन प्रभाव मैं विशिष्ट सॉकेट एपीआई का उपयोग करके लिनक्स प्लेटफ़ॉर्म पर सी ++ में नेटवर्क एप्लिकेशन लिखने पर काम कर रहा हूं, और मैं लिखने के 2 वैकल्पिक तरीकों को देख रहा हूं एक टीसीटी धारा के लिए एक बाइट सरणी: या तो लिखने(), या कॉल() भेजकर। मुझे पता है कि, चूंकि यह लिनक्स है, इसलिए सॉकेट हैंडल बस एक फ़ाइल डिस्क्रिप्टर है, और इसलिए यह सॉकेट पर पढ़ने() और लिखने() कॉल करने के लिए मान्य है, हालांकि सॉकेट एपीआई भी भेजता है() और आरईवी () एक ही कार्य करने के लिए कार्य करता है।सॉकेट
इसलिए मुझे आश्चर्य है कि क्या एक दूसरे के कार्यों के एक वर्ग को चुनने का कोई विशेष कारण है - क्या नेटवर्क लेखन/पढ़ने के लिए अनुकूलित/आरईवी कार्यों को अनुकूलित किया गया है, क्या वे बेहतर प्रदर्शन करते हैं? या क्या यह वास्तव में मनमानी है जिसका मैं उपयोग करता हूं? पढ़िए() और लिखो() सभी मामलों में ठीक से व्यवहार करते हैं?
किसी भी अंतर्दृष्टि के लिए धन्यवाद!
क्या यह फ्रीबीएसडी या अन्य प्लेटफार्मों के बारे में भी सच है? - वह लाइन मेरे प्रेषण (2) मैन पेज में प्रकट नहीं होती है। –
@ गुडपर्सन यह सभी प्लेटफॉर्म पर लागू होता है। यदि ऐसा नहीं था, तो 'inetd' और जैसा काम नहीं करेगा। ('inetd' आपकी सॉकेट को आपकी डेमॉन प्रक्रिया के stdin और stdout में डुप्लिकेट करता है, और आपकी प्रक्रिया सामान्य रूप से stdin और stdout के साथ सीधे बातचीत कर सकती है, बिना किसी जागरूकता के कि वे सॉकेट हैं। बेशक, आप उनके साथ सॉकेट सामान भी कर सकते हैं।) –