एपोल: Difference between revisions

From Vigyanwiki
(Created page with "{{Short description|Linux-specific system call for a scalable I/O event notification mechanism}} {{Lowercase title}}<code>epoll</code>स्केलेबल I/O ईवें...")
 
No edit summary
 
(7 intermediate revisions by 3 users not shown)
Line 1: Line 1:
{{Short description|Linux-specific system call for a scalable I/O event notification mechanism}}
{{Short description|Linux-specific system call for a scalable I/O event notification mechanism}}
{{Lowercase title}}<code>epoll</code>स्केलेबल I/O ईवेंट अधिसूचना तंत्र के लिए एक Linux कर्नेल [[सिस्टम कॉल]] है, जिसे पहली बार Linux कर्नेल के संस्करण 2.5.44 में पेश किया गया था।<ref name="epoll(7) - Linux manual page">{{cite web |url=http://man7.org/linux/man-pages/man7/epoll.7.html |title=epoll(7) - Linux manual page |publisher=Man7.org |date=2012-04-17 |access-date=2014-03-01}}</ref> इसका कार्य एकाधिक फ़ाइल डिस्क्रिप्टरों की निगरानी करना है ताकि यह देखा जा सके कि उनमें से किसी पर I/O संभव है या नहीं। इसका उद्देश्य पुराने [[POSIX]] सिलेक्ट (यूनिक्स)| को बदलना है<code>select(2)</code>और <code>poll(2)</code> सिस्टम कॉल, अधिक मांग वाले अनुप्रयोगों में बेहतर प्रदर्शन प्राप्त करने के लिए, जहां देखे गए [[फ़ाइल डिस्क्रिप्टर]] की संख्या बड़ी है (पुराने सिस्टम कॉल के विपरीत, जो बिग ओ नोटेशन (एन) समय में काम करते हैं, <code>epoll</code> O(1) समय में संचालित होता है<ref>{{cite web |url=http://kovyrin.net/2006/04/13/epoll-asynchronous-network-programming |title=एसिंक्रोनस नेटवर्क प्रोग्रामिंग के लिए epoll() का उपयोग करना|author=Oleksiy Kovyrin |publisher=Kovyrin.net |date=2006-04-13 |access-date=2014-03-01}}</ref>).
<code>'''epoll'''</code> स्केलेबल इनपुट/आउटपुट ईवेंट अधिसूचना प्रणाली के लिए लिनक्स कर्नेल [[सिस्टम कॉल|प्रणाली कॉल]] है, जिसे सर्वप्रथम लिनक्स कर्नेल के संस्करण 2.5.44 में प्रस्तुत किया गया था।<ref name="epoll(7) - Linux manual page">{{cite web |url=http://man7.org/linux/man-pages/man7/epoll.7.html |title=epoll(7) - Linux manual page |publisher=Man7.org |date=2012-04-17 |access-date=2014-03-01}}</ref> इसका कार्य एकाधिक फ़ाइल डिस्क्रिप्टरों का निरीक्षण करना है जिससे यह देखा जा सके कि उनमें से किसी पर इनपुट/आउटपुट संभव है या नहीं। इसका उद्देश्य अधिक आवश्यकता वाले अनुप्रयोगों में उत्तम प्रदर्शन प्राप्त करने के लिए प्राचीन [[POSIX|पॉज़िक्स]] चयन <code>select(2)</code> (यूनिक्स) और <code>poll(2)</code> प्रणाली कॉल को प्रतिस्थापित करना है, जहां देखे गए [[फ़ाइल डिस्क्रिप्टर]] की संख्या बड़ी है (प्राचीन प्रणाली कॉल के विपरीत, जो O में कार्य करते हैं) (''O''(''n'') समय, एपोल <code>epoll</code> O(1) समय में संचालित होता है)।<ref>{{cite web |url=http://kovyrin.net/2006/04/13/epoll-asynchronous-network-programming |title=एसिंक्रोनस नेटवर्क प्रोग्रामिंग के लिए epoll() का उपयोग करना|author=Oleksiy Kovyrin |publisher=Kovyrin.net |date=2006-04-13 |access-date=2014-03-01}}</ref>


<code>epoll</code> [[FreeBSD]] के Kqueue| के समान है<code>kqueue</code>, इसमें उपयोगकर्ता-स्पेस फ़ंक्शंस का एक सेट शामिल है, प्रत्येक एक फ़ाइल डिस्क्रिप्टर तर्क लेता है जो कॉन्फ़िगर करने योग्य कर्नेल ऑब्जेक्ट को दर्शाता है, जिसके विरुद्ध वे सहकारी रूप से काम करते हैं। <code>epoll</code> वर्तमान में मॉनिटर किए जा रहे सभी फ़ाइल डिस्क्रिप्टरों पर नज़र रखने के लिए एक लाल-काले पेड़ (आरबी-ट्री) डेटा संरचना का उपयोग करता है।<ref>{{cite web |url=https://idndx.com/the-implementation-of-epoll-1/ |title=एपोल का कार्यान्वयन (1)|website=idndx.com |date=September 2014 |url-status=live}} </ref>
<code>epoll</code> [[FreeBSD|फ्रीबीएसडी]] के <code>kqueue</code> के समान है, इसमें उपयोगकर्ता-स्पेस फ़ंक्शंस का सेट सम्मिलित है, प्रत्येक फ़ाइल डिस्क्रिप्टर तर्क लेता है जो कॉन्फ़िगर करने योग्य कर्नेल ऑब्जेक्ट को दर्शाता है, जिसके विरुद्ध वे सहकारी रूप से कार्य करते हैं। <code>epoll</code> वर्तमान में मॉनिटर किए जा रहे सभी फ़ाइल डिस्क्रिप्टरों पर निरीक्षण रखने के लिए रेड-ब्लैक ट्री (आरबी-ट्री) डेटा संरचना का उपयोग करता है।<ref>{{cite web |url=https://idndx.com/the-implementation-of-epoll-1/ |title=एपोल का कार्यान्वयन (1)|website=idndx.com |date=September 2014 |url-status=live}} </ref>  


 
== एपीआई ==
==एपीआई==
<syntaxhighlight lang="c">int epoll_create1(int flags);</syntaxhighlight>
<syntaxhighlight lang="c">int epoll_create1(int flags);</syntaxhighlight>
एक बनाता है <code>epoll</code> ऑब्जेक्ट और उसका फ़ाइल डिस्क्रिप्टर लौटाता है। <code>flags</code> e> पैरामीटर एपोल व्यवहार को संशोधित करने की अनुमति देता है। इसका केवल एक ही वैध मान है, <code>EPOLL_CLOEXEC</code>. <code>epoll_create()</code> का एक पुराना संस्करण है <code>epoll_create1()</code> और इसे Linux कर्नेल संस्करण 2.6.27 और glibc संस्करण 2.9 के रूप में हटा दिया गया है।<ref>{{cite book|last=Love|first=Robert|title=लिनक्स सिस्टम प्रोग्रामिंग|year=2013|publisher=O’Reilly|isbn=978-1-449-33953-1|pages=97, 98|edition=Second}}</ref>
<code>epoll</code> ऑब्जेक्ट बनाता है और उसका फ़ाइल डिस्क्रिप्टर रिटर्न करता है। <code>flags</code> पैरामीटर एपोल व्यवहार को संशोधित करने की अनुमति देता है। इसका केवल एक ही वैध मान है, <code>EPOLL_CLOEXEC</code>. <code>epoll_create()</code> <code>epoll_create1()</code> का प्राचीन संस्करण है और इसे लिनक्स कर्नेल संस्करण 2.6.27 और glibc संस्करण 2.9 के रूप में विस्थापित कर गया है।<ref>{{cite book|last=Love|first=Robert|title=लिनक्स सिस्टम प्रोग्रामिंग|year=2013|publisher=O’Reilly|isbn=978-1-449-33953-1|pages=97, 98|edition=Second}}</ref>
<syntaxhighlight lang="c">int epoll_ctl(int epfd, int op, int fd, struct epoll_event *event);</syntaxhighlight>
<syntaxhighlight lang="c">int epoll_ctl(int epfd, int op, int fd, struct epoll_event *event);</syntaxhighlight>
नियंत्रित करता है (कॉन्फ़िगर करता है) कि कौन से फ़ाइल डिस्क्रिप्टर इस ऑब्जेक्ट द्वारा देखे जाते हैं, और किन घटनाओं के लिए। <code>op</code> जोड़ें, संशोधित करें या हटाएं जा सकते हैं.
नियंत्रित करता है (कॉन्फ़िगर करता है) कि कौन से फ़ाइल डिस्क्रिप्टर इस ऑब्जेक्ट द्वारा देखे जाते हैं, और किन घटनाओं के लिए <code>op</code> जोड़ें, संशोधित करें या विस्थापित किये जा सकते हैं।
<syntaxhighlight lang="c">int epoll_wait(int epfd, struct epoll_event *events, int maxevents, int timeout);</syntaxhighlight>
<syntaxhighlight lang="c">int epoll_wait(int epfd, struct epoll_event *events, int maxevents, int timeout);</syntaxhighlight>
के साथ पंजीकृत किसी भी घटना की प्रतीक्षा करता है <code>epoll_ctl</code>, जब तक कि कम से कम एक घटित न हो या समय समाप्त न हो जाए। घटित घटनाओं को लौटाता है <code>events</code>, तक <code>maxevents</code> तुरंत। <code>maxevents</code> की अधिकतम संख्या है <code>epoll_event</code>/फ़ाइल डिस्क्रिप्टर की निगरानी की जाएगी।<ref>{{cite web |url=https://stackoverflow.com/questions/2969425/epoll-wait-maxevents |title=epoll_wait: maxevents |date=Jun 3, 2010|access-date=2023-07-06}}</ref><ref>{{cite web |url=https://man7.org/linux/man-pages/man2/epoll_wait.2.html |title=epoll_wait(2) — Linux manual page |date=2023-03-30|access-date=2023-07-06}}</ref> अधिकांश मामलों में, <code>maxevents</code> के आकार के मान पर सेट किया गया है <code>*events</code> तर्क (<code>struct epoll_event *events</code> सारणी)।
<code>epoll_ctl</code> के साथ पंजीकृत किसी भी घटना की प्रतीक्षा करता है, जब तक कि कम से कम घटित न हो या समय समाप्त न हो जाए। घटनाओं में घटित घटनाओं को अधिकतम घटनाओं तक रिटर्न करता है। <code>maxevents</code> निरीक्षण के लिए <code>epoll_event</code>/फ़ाइल डिस्क्रिप्टर की अधिकतम संख्या है। अधिकांश स्तिथि में, <code>maxevents</code> को <code>events</code>, तर्क <code>maxevent</code> (<code>struct epoll_event *events</code> ऐरे) के आकार के मान पर सेट किया जाता है।<ref>{{cite web |url=https://stackoverflow.com/questions/2969425/epoll-wait-maxevents |title=epoll_wait: maxevents |date=Jun 3, 2010|access-date=2023-07-06}}</ref><ref>{{cite web |url=https://man7.org/linux/man-pages/man2/epoll_wait.2.html |title=epoll_wait(2) — Linux manual page |date=2023-03-30|access-date=2023-07-06}}</ref>


==ट्रिगरिंग मोड==
==ट्रिगरिंग मोड==
<code>epoll</code> इंटरप्ट#एज-ट्रिगर|एज-ट्रिगर और इंटरप्ट#लेवल-ट्रिगर|लेवल-ट्रिगर दोनों मोड प्रदान करता है। एज-ट्रिगर मोड में, एक कॉल <code>epoll_wait</code> केवल तभी वापस आएगा जब कोई नया इवेंट इसके साथ जोड़ा जाएगा <code>epoll</code> ऑब्जेक्ट, लेवल-ट्रिगर मोड में रहते हुए, <code>epoll_wait</code> जब तक स्थिति रहेगी वापस आएँगे।
<code>epoll</code> एज-ट्रिगर और लेवल-ट्रिगर दोनों मोड प्रदान करता है। एज-ट्रिगर मोड में, <code>epoll_wait</code> पर कॉल केवल तभी रिटर्न आएगा जब कोई नया इवेंट <code>epoll</code> ऑब्जेक्ट के साथ जोड़ा जाएगा, जबकि लेवल-ट्रिगर मोड में, <code>epoll_wait</code> तब तक रिटर्न आएगा जब तक स्थिति बनी रहेगी।


उदाहरण के लिए, यदि कोई अज्ञात पाइप पंजीकृत है <code>epoll</code> डेटा प्राप्त हुआ है, एक कॉल <code>epoll_wait</code> पढ़ने के लिए डेटा की उपस्थिति का संकेत देते हुए वापस आ जाएगा। मान लीजिए, पाठक ने बफ़र से डेटा का केवल एक भाग ही उपभोग किया। लेवल-ट्रिगर मोड में, आगे कॉल करता है <code>epoll_wait</code> तुरंत वापस जाएगा, जब तक पाइप के बफ़र में पढ़ने के लिए डेटा मौजूद है। हालाँकि, एज-ट्रिगर मोड में, <code>epoll_wait</code> पाइप में नया डेटा लिखे जाने के बाद ही वापस आएगा।<ref name="epoll(7) - Linux manual page" />
उदाहरण के लिए, यदि ईपोल के साथ पंजीकृत पाइप को डेटा प्राप्त हुआ है, तो <code>epoll_wait</code> पर कॉल रिटर्न आएगी, जो पढ़ने के लिए डेटा की उपस्थिति का संकेत देगी। मान लीजिए, पाठक ने बफ़र से डेटा का केवल एक भाग ही उपभोग किया। लेवल-ट्रिगर मोड में, <code>epoll_wait</code> पर आगे की कॉल तुरंत रिटर्न जाएगी, जब तक पाइप के बफर में पढ़ने के लिए डेटा उपस्तिथ है। चूँकि, एज-ट्रिगर मोड में, <code>epoll_wait</code> पाइप में नया डेटा लिखे जाने के पश्चात ही रिटर्न आएगा।<ref name="epoll(7) - Linux manual page" />


== आलोचना ==
[[ब्रायन कैंट्रिल]] बताया कि एपोल में ऐसी त्रुटि थीं जिनसे बचा जा सकता था, यदि उसने अपने पूर्ववर्तियों से सीखा होता: इनपुट/आउटपुट पूर्णता पोर्ट, [[इवेंट पोर्ट]] (सोलारिस) और क्यूक्यू है। चूँकि, उनकी आलोचना का बड़ा भाग <code>epoll</code> के <code>EPOLLONESHOT</code> और <code>EPOLLEXCLUSIVE</code> विकल्पों द्वारा संबोधित किया गया था।<ref>Archived at [https://ghostarchive.org/varchive/youtube/20211205/l6XQUciI-Sc Ghostarchive]{{cbignore}} and the [https://web.archive.org/web/20151202133409/https://www.youtube.com/watch?v=l6XQUciI-Sc Wayback Machine]{{cbignore}}: {{cite web| url = https://www.youtube.com/watch?v=l6XQUciI-Sc&t=57m| title = Ubuntu Slaughters Kittens {{!}} BSD Now 103 | website=[[YouTube]]}}{{cbignore}}</ref> <code>EPOLLONESHOT</code> को फरवरी 2004 में प्रारंभ लिनक्स कर्नेल मेनलाइन के संस्करण 2.6.2 में जोड़ा गया था। <code>EPOLLEXCLUSIVE</code> को मार्च 2016 में प्रारंभ संस्करण 4.5 में जोड़ा गया था।


==आलोचना==
<ref>{{cite web |url=https://idea.popcount.org/2017-02-20-epoll-is-fundamentally-broken-12/ |title=Epoll is fundamentally broken 1/2 |publisher=idea.popcount.org |date=2017-02-20 |access-date=2017-10-06}}</ref>
[[ब्रायन कैंट्रिल]] ने इस ओर इशारा किया <code>epoll</code> इसमें गलतियाँ थीं जिन्हें टाला जा सकता था, अगर इसने अपने पूर्ववर्तियों से सीखा होता: इनपुट/आउटपुट पूर्णता पोर्ट, [[इवेंट पोर्ट]] (सोलारिस) और केक्यू।<ref>Archived at [https://ghostarchive.org/varchive/youtube/20211205/l6XQUciI-Sc Ghostarchive]{{cbignore}} and the [https://web.archive.org/web/20151202133409/https://www.youtube.com/watch?v=l6XQUciI-Sc Wayback Machine]{{cbignore}}: {{cite web| url = https://www.youtube.com/watch?v=l6XQUciI-Sc&t=57m| title = Ubuntu Slaughters Kittens {{!}} BSD Now 103 | website=[[YouTube]]}}{{cbignore}}</ref> हालाँकि, उनकी आलोचना के एक बड़े हिस्से को संबोधित किया गया था <code>epoll</code>'एस <code>EPOLLONESHOT</code> और <code>EPOLLEXCLUSIVE</code> विकल्प. <code>EPOLLONESHOT</code> फरवरी 2004 में जारी लिनक्स कर्नेल मेनलाइन के संस्करण 2.6.2 में जोड़ा गया था। <code>EPOLLEXCLUSIVE</code> मार्च 2016 में जारी संस्करण 4.5 में जोड़ा गया था।<ref>{{cite web |url=https://idea.popcount.org/2017-02-20-epoll-is-fundamentally-broken-12/ |title=Epoll is fundamentally broken 1/2 |publisher=idea.popcount.org |date=2017-02-20 |access-date=2017-10-06}}</ref>
 
 
== यह भी देखें ==
{{Portal|Linux}}


== यह भी देखें{{Portal|Linux}} ==
* इनपुट/आउटपुट पूर्णता पोर्ट (आईओसीपी)
* इनपुट/आउटपुट पूर्णता पोर्ट (आईओसीपी)
* क्यू
* क्यू
* मुक्ति घटना
* लिबइवेंट


==संदर्भ==
==संदर्भ==
Line 39: Line 36:


{{Linux kernel}}
{{Linux kernel}}
[[Category: घटनाक्रम (कंप्यूटिंग)]] [[Category: लिनक्स कर्नेल सुविधाएँ]] [[Category: सिस्टम कॉल]]


[[Category: Machine Translated Page]]
[[Category:CS1 maint]]
[[Category:Collapse templates]]
[[Category:Created On 10/07/2023]]
[[Category:Created On 10/07/2023]]
[[Category:Lua-based templates]]
[[Category:Machine Translated Page]]
[[Category:Navigational boxes| ]]
[[Category:Navigational boxes without horizontal lists]]
[[Category:Pages with empty portal template]]
[[Category:Pages with script errors]]
[[Category:Portal-inline template with redlinked portals]]
[[Category:Portal templates with redlinked portals]]
[[Category:Sidebars with styles needing conversion]]
[[Category:Template documentation pages|Documentation/doc]]
[[Category:Templates Vigyan Ready]]
[[Category:Templates generating microformats]]
[[Category:Templates that add a tracking category]]
[[Category:Templates that are not mobile friendly]]
[[Category:Templates that generate short descriptions]]
[[Category:Templates using TemplateData]]
[[Category:Wikipedia metatemplates]]
[[Category:घटनाक्रम (कंप्यूटिंग)]]
[[Category:लिनक्स कर्नेल सुविधाएँ]]
[[Category:सिस्टम कॉल]]

Latest revision as of 10:14, 28 July 2023

epoll स्केलेबल इनपुट/आउटपुट ईवेंट अधिसूचना प्रणाली के लिए लिनक्स कर्नेल प्रणाली कॉल है, जिसे सर्वप्रथम लिनक्स कर्नेल के संस्करण 2.5.44 में प्रस्तुत किया गया था।[1] इसका कार्य एकाधिक फ़ाइल डिस्क्रिप्टरों का निरीक्षण करना है जिससे यह देखा जा सके कि उनमें से किसी पर इनपुट/आउटपुट संभव है या नहीं। इसका उद्देश्य अधिक आवश्यकता वाले अनुप्रयोगों में उत्तम प्रदर्शन प्राप्त करने के लिए प्राचीन पॉज़िक्स चयन select(2) (यूनिक्स) और poll(2) प्रणाली कॉल को प्रतिस्थापित करना है, जहां देखे गए फ़ाइल डिस्क्रिप्टर की संख्या बड़ी है (प्राचीन प्रणाली कॉल के विपरीत, जो O में कार्य करते हैं) (O(n) समय, एपोल epoll O(1) समय में संचालित होता है)।[2]

epoll फ्रीबीएसडी के kqueue के समान है, इसमें उपयोगकर्ता-स्पेस फ़ंक्शंस का सेट सम्मिलित है, प्रत्येक फ़ाइल डिस्क्रिप्टर तर्क लेता है जो कॉन्फ़िगर करने योग्य कर्नेल ऑब्जेक्ट को दर्शाता है, जिसके विरुद्ध वे सहकारी रूप से कार्य करते हैं। epoll वर्तमान में मॉनिटर किए जा रहे सभी फ़ाइल डिस्क्रिप्टरों पर निरीक्षण रखने के लिए रेड-ब्लैक ट्री (आरबी-ट्री) डेटा संरचना का उपयोग करता है।[3]

एपीआई

int epoll_create1(int flags);

epoll ऑब्जेक्ट बनाता है और उसका फ़ाइल डिस्क्रिप्टर रिटर्न करता है। flags पैरामीटर एपोल व्यवहार को संशोधित करने की अनुमति देता है। इसका केवल एक ही वैध मान है, EPOLL_CLOEXEC. epoll_create() epoll_create1() का प्राचीन संस्करण है और इसे लिनक्स कर्नेल संस्करण 2.6.27 और glibc संस्करण 2.9 के रूप में विस्थापित कर गया है।[4]

int epoll_ctl(int epfd, int op, int fd, struct epoll_event *event);

नियंत्रित करता है (कॉन्फ़िगर करता है) कि कौन से फ़ाइल डिस्क्रिप्टर इस ऑब्जेक्ट द्वारा देखे जाते हैं, और किन घटनाओं के लिए op जोड़ें, संशोधित करें या विस्थापित किये जा सकते हैं।

int epoll_wait(int epfd, struct epoll_event *events, int maxevents, int timeout);

epoll_ctl के साथ पंजीकृत किसी भी घटना की प्रतीक्षा करता है, जब तक कि कम से कम घटित न हो या समय समाप्त न हो जाए। घटनाओं में घटित घटनाओं को अधिकतम घटनाओं तक रिटर्न करता है। maxevents निरीक्षण के लिए epoll_event/फ़ाइल डिस्क्रिप्टर की अधिकतम संख्या है। अधिकांश स्तिथि में, maxevents को events, तर्क maxevent (struct epoll_event *events ऐरे) के आकार के मान पर सेट किया जाता है।[5][6]

ट्रिगरिंग मोड

epoll एज-ट्रिगर और लेवल-ट्रिगर दोनों मोड प्रदान करता है। एज-ट्रिगर मोड में, epoll_wait पर कॉल केवल तभी रिटर्न आएगा जब कोई नया इवेंट epoll ऑब्जेक्ट के साथ जोड़ा जाएगा, जबकि लेवल-ट्रिगर मोड में, epoll_wait तब तक रिटर्न आएगा जब तक स्थिति बनी रहेगी।

उदाहरण के लिए, यदि ईपोल के साथ पंजीकृत पाइप को डेटा प्राप्त हुआ है, तो epoll_wait पर कॉल रिटर्न आएगी, जो पढ़ने के लिए डेटा की उपस्थिति का संकेत देगी। मान लीजिए, पाठक ने बफ़र से डेटा का केवल एक भाग ही उपभोग किया। लेवल-ट्रिगर मोड में, epoll_wait पर आगे की कॉल तुरंत रिटर्न आ जाएगी, जब तक पाइप के बफर में पढ़ने के लिए डेटा उपस्तिथ है। चूँकि, एज-ट्रिगर मोड में, epoll_wait पाइप में नया डेटा लिखे जाने के पश्चात ही रिटर्न आएगा।[1]

आलोचना

ब्रायन कैंट्रिल बताया कि एपोल में ऐसी त्रुटि थीं जिनसे बचा जा सकता था, यदि उसने अपने पूर्ववर्तियों से सीखा होता: इनपुट/आउटपुट पूर्णता पोर्ट, इवेंट पोर्ट (सोलारिस) और क्यूक्यू है। चूँकि, उनकी आलोचना का बड़ा भाग epoll के EPOLLONESHOT और EPOLLEXCLUSIVE विकल्पों द्वारा संबोधित किया गया था।[7] EPOLLONESHOT को फरवरी 2004 में प्रारंभ लिनक्स कर्नेल मेनलाइन के संस्करण 2.6.2 में जोड़ा गया था। EPOLLEXCLUSIVE को मार्च 2016 में प्रारंभ संस्करण 4.5 में जोड़ा गया था।

[8]

यह भी देखें

  • इनपुट/आउटपुट पूर्णता पोर्ट (आईओसीपी)
  • क्यू
  • लिबइवेंट

संदर्भ

  1. 1.0 1.1 "epoll(7) - Linux manual page". Man7.org. 2012-04-17. Retrieved 2014-03-01.
  2. Oleksiy Kovyrin (2006-04-13). "एसिंक्रोनस नेटवर्क प्रोग्रामिंग के लिए epoll() का उपयोग करना". Kovyrin.net. Retrieved 2014-03-01.
  3. "एपोल का कार्यान्वयन (1)". idndx.com. September 2014.{{cite web}}: CS1 maint: url-status (link)
  4. Love, Robert (2013). लिनक्स सिस्टम प्रोग्रामिंग (Second ed.). O’Reilly. pp. 97, 98. ISBN 978-1-449-33953-1.
  5. "epoll_wait: maxevents". Jun 3, 2010. Retrieved 2023-07-06.
  6. "epoll_wait(2) — Linux manual page". 2023-03-30. Retrieved 2023-07-06.
  7. Archived at Ghostarchive and the Wayback Machine: "Ubuntu Slaughters Kittens | BSD Now 103". YouTube.
  8. "Epoll is fundamentally broken 1/2". idea.popcount.org. 2017-02-20. Retrieved 2017-10-06.


बाहरी संबंध