2013-01-20 25 views
9

में कार्यक्षमता का चयन करें मैं अपने प्रोजेक्ट के लिए boost :: asio lib का उपयोग करने जा रहा हूं। लेकिन यह बिल्कुल स्पष्ट नहीं है कि फ़ंक्शन देशी सॉकेट सी lib से select() के अनुरूप है। क्या यह एएसओ में उपलब्ध है? या हम सॉकेट तैयार करने के लिए वैकल्पिक विकल्प प्रदान करते हैं?बूस्ट :: एएसआई

+1

+1 यह एक मूल प्रश्न की तरह प्रतीत हो सकता है, लेकिन मुझे पता चला है कि एएसओ लाइब्रेरी में नए उपयोगकर्ता अक्सर इस अवधारणा से उलझन में हैं। –

उत्तर

5

Boost.Asio का उच्च स्तरीय डिज़ाइन Proactor desing pattern पर आधारित है। इस प्रकार, आपको select पर मतदान करने की आवश्यकता नहीं है। इसके बजाय, एक एसिंक्रोनस ऑपरेशन के लिए अपना पूरा करने वाला हैंडलर सबमिट करें, और जब ऑपरेशन पूरा हो जाए - पूरा होने वाले हैंडलर को कॉल किया जाता है।

6

प्रलेखन, एक specific section बीएसडी सॉकेट एपीआई मानचित्रण के लिए अपने-अपने एसियो बराबर

poll(), select() में कॉल है pselect()

io_service::run(), io_service::run_one(), io_service::poll(), io_service::poll_one()

नोट: संयोजन में एसिंक्रोनस ऑपरेशंस के साथ।

नोट इन io_service तरीकों में से प्रत्येक के बीच सूक्ष्म अंतर, सही अपने आवेदन डिजाइन पर निर्भर करेगा उठा रहे हैं।

2

बूस्ट.एएसियो null_buffers का उपयोग कर कार्यक्षमता की तरह एक चयन प्रदान करता है। https://stackoverflow.com/a/4686523/1134207 और बताते हैं।