शीर्षक वास्तव में यह सब कहता है।एक फ़ाइल डिस्क्रिप्टर के साथ, क्या चयन, चुनाव और एपोल और ... के बीच कोई प्रदर्शन अंतर है?
और ... इसका मतलब यह भी pselect और ppoll ..
सर्वर परियोजना मैं पर काम कर रहा हूँ मूल रूप से एक से अधिक थ्रेड के साथ संरचित शामिल हैं। प्रत्येक थ्रेड एक या अधिक सत्रों को संभालता है। सभी धागे समान हैं। प्रोटोकॉल इस बात का ख्याल रखता है कि कौन सा धागा सत्र की मेजबानी करेगा।
मैं इनहाउस सॉकेट क्लास का उपयोग कर रहा हूं जो चीज़ों को लपेटता है। ब्याज बिंदु एक चेकड कॉल है जो या तो मतदान (लिनक्स) या चुनिंदा (विंडोज़) कहता है।
सारांश में प्रत्येक थ्रेड वर्तमान में एकल सॉकेट पर मतदान कहता है। जो मैं बता सकता हूं, एपोल का उपयोग केवल तभी फायदेमंद होगा यदि यह थ्रेड एकाधिक सॉकेट्स को देख रहा था जैसे कि आप HTTP सर्वर में क्या प्राप्त करेंगे। यही नहीं है कि मैं अपने मामले में क्या कर रहा हूं। और कक्षा केवल एक ही सॉकेट को एक समय में संभालती है।
एपोल के लिए मैन पेजों में किनारे और स्तर के ट्रिगरिंग के बारे में कुछ संक्षिप्त चर्चा है। मुझे सच में यकीन नहीं है कि इसका क्या अर्थ है। सॉकेट क्लास में मैं कोड के विंडोज़ भाग में एक ऑप्टिमाइज़ेशन देखता हूं जो किसी भी डेटा को जांचने के लिए ioctlsocket & FIONREAD के साथ चुनिंदा कॉल को शॉर्टकट करता है। आश्चर्य है कि अगर वह वापस आएगा> 0 भले ही कॉल के समय पूरा यूडीपी पैकेट नहीं पहुंचा। क्या यह किनारा ट्रिगरिंग एपोल में है?
कुछ प्राथमिक परीक्षण में, मुझे चयन और मतदान का उपयोग करने के बीच कोई उल्लेखनीय अंतर भी नहीं दिख रहा है।
मैं देख सकता हूं कि टाइमआउट में अधिक सटीकता के कारण पीपीओएल का उपयोग लाभ हो सकता है। कोई विचार?
और हां, मैं ऐसे सत्र के लिए थ्रूपुट अनुकूलित करने की कोशिश कर रहा हूं जो बहुत सारे डेटा प्राप्त कर रहा है। सर्वर अधिक नेटवर्क & सीपीयू से बाध्य डिस्क है।
धन्यवाद, मूल रूप से पुष्टि की गई कि मैंने प्रयोग द्वारा क्या पाया। – Matt
यदि आप एकल फ़ाइल डिस्क्रिप्टर की बड़ी संख्या है, तो आप 'चयन' का उपयोग नहीं करना चाहते हैं, क्योंकि 'चयन'' ओ (अधिकतम एफडी संख्या) 'है, जबकि 'मतदान'' ओ (अनुरोध में एफडीएस की संख्या है) '। – o11c