هل من الممكن استخدام مواضيع منفصلة للقراءة والكتابة مع Boost.asio؟
-
11-09-2019 - |
سؤال
وفقا لتعزيز توثيق, ، الحصول على مكالمة متعددة المواضيع io_service::run()
يقوم بإعداد مجموعة من الخيوط التي يمكن أن تستخدمها خدمة IO لأداء المهام غير المتزامنة. تنص صراحة على أن جميع المواضيع التي انضمت إلى حمام السباحة تعتبر مكافئة.
هل هذا يعني أنه من الممكن أن يكون لديك موضوع منفصل للقراءة من المقبس وواحد منفصل للكتابة؟ إذا كان ذلك ممكنا، كيف يمكنني تنفيذ هذا؟
المحلول
أي موضوع يستدعي io_service::run()
يمكن استخدامها لاستدعاء معالجات غير متزامنة. ولكن لا يمكنك تحديد مؤشر الترابط الذي ينفذ أي نوع من أنواع التشغيل. على سبيل المثال، إذا اتصلت IO_SERVICE :: RUN () في خيوط خلفية 2، وكانت الاتصال بالاتصال socket::async_send
و socket::async_receive
في مؤشر ترابط رئيسي، سيتم تنفيذ معالجاتك في أي مؤشر ترابط خلفية متوفر حاليا. لذلك نعم، تعتبر جميع المواضيع بشكل أساسي معادل، ويمكن استخدامها لأي عملية غير متزامنة.