2011-06-10 18 views
7

मैंने एपोल और चयन के बीच मतभेदों के बारे में कुछ विचार पाने के लिए कुछ नेटवर्किंग किताबें पढ़ी हैं, लेकिन उन्होंने केवल इन अवधारणाओं को थोड़ा सा कवर किया है। यदि आप लोग विवरण में महत्वपूर्ण अंतर प्रदान कर सकते हैं तो मेरी सराहना की जाएगी।एपोल वीएस का चयन करें

अग्रिम

+0

http://stackoverflow.com/questions/2032598/caveats-of-select-poll-vs -epoll-रिएक्टरों में मुड़ – Young

उत्तर

14

select धन्यवाद कर अतुल्यकालिक आईओ के लिए मानक यूनिक्स की सुविधा है। इसका प्रोग्रामिंग इंटरफ़ेस क्विर्की है, और अधिकांश यूनिक्स में इसका कार्यान्वयन सबसे अच्छा है। यह किसी भी प्रक्रिया में असुविधाजनक है, जो किसी भी प्रक्रिया को देख सकते हैं, जो वर्णक की अधिकतम संख्या पर एक सीमा लगाता है। दक्षता के संबंध में, select का प्रदर्शन आम तौर पर वर्णनकर्ताओं की संख्या के साथ रैखिक रूप से घटता है।

epoll प्रोग्रामिंग इंटरफ़ेस और दक्षता के मामले में select पर एक बड़ा सुधार है, लेकिन केवल संस्करण 2.6 से शुरू होने वाले लिनक्स में प्रदान किया जाता है। अन्य यूनिक्सों में भी उनकी विशेष कॉल है।

1

selectselect() पर कॉल करते समय हमेशा कर्नेल को वितरण डिस्क्रिप्टर।
लेकिन epollepoll_ctl() पर कॉल करते समय एक बार वर्णनकर्ता को डिलीवरी करें और epoll_wait() पर कॉल करके ईवेंट प्राप्त करें।

और select का उपयोग करते समय ईवेंट की जांच के लिए अधिकतम_डिस्क्रिप्टर को लूप 0।
लेकिन घटना के लिए लूप epoll का उपयोग करते समय घटनाओं की जांच के लिए वर्णनकर्ताओं का सामना करना पड़ा।

ये प्रदर्शन में अंतर बनाता है।

और select की अधिकतम संख्या में वर्णक की सीमा है क्योंकि यह बिट सरणी का उपयोग करती है।
लेकिन epoll की कोई सीमा नहीं है क्योंकि यह संरचना सरणी का उपयोग करती है।

और select प्लेटफार्मों (विंडोज, लिनक्स, यूनिक्स, बीएसडी)
लेकिन epoll केवल linux में मौजूद है के अधिकांश में मौजूद है।
बेशक , वहाँ epoll की (IOCP खिड़कियों में आदि, बीएसडी में kqueue, ..) अन्य प्लेटफार्मों में प्रतिस्थापन मौजूद

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