2012-02-28 12 views
18

मैं हाल ही में कुछ अक्का कर रहा हूं और आश्चर्यचकित हूं: क्या मैं बड़ी परेशानी के बिना अक्का में I/O अवरुद्ध कर सकता हूं? आइए हम कहें कि हमारे पास एक अभिनेता है जो कुछ अवरुद्ध करता है I/O क्योंकि यह विरासत लाइब्रेरी का उपयोग करता है या किसी अन्य कारण से: क्या मैं उन अभिनेताओं के लिए एक विशेष प्रेषक का उपयोग नहीं कर सकता जो उचित रूप से थ्रेडपूल आकार और I/O अवरुद्ध करता है अन्य सभी कलाकारों को अवरुद्ध कर रहे हैं क्योंकि वे एक अलग प्रेषक के साथ भागते हैं?अक्का में ब्लॉकिंग आईओ

इस के डाउनसाइड्स क्या हैं? और एक अभिनेता से तीसरे पक्ष के HTTP-एपीआई को कॉल करने का सबसे अच्छा तरीका क्या होगा?

उत्तर

17

आईओ अवरुद्ध करना सामान्य रूप से एक प्रतिक्रियाशील बहुआयामी वातावरण में एक बुरा विचार है, इसलिए आपका पहला कदम यह है कि इसे पूरी तरह से टालने का प्रयास करें, इसका मतलब है AsyncHttpClient या HttpAsyncClient का उपयोग करना।

यदि यह काम नहीं करता है, तो आप कम से कम अवरोधक अभिनेताओं को अपने स्वयं के धागे देकर जोखिम को कम कर सकते हैं। यह निश्चित रूप से महंगा होगा और आप अभी भी अपने मेलबॉक्स भरने का जोखिम उठाएंगे, लेकिन ब्लॉकिंग आईओ का उपयोग करने की पसंद है।

आप नेटवर्क IO के लिए अधिक कच्चे इंटरफ़ेस के लिए आईओ अभिनेता मॉड्यूल को भी देखना चाहेंगे।

आशा इस के किसी भी मदद करता है,

चीयर्स, √

+0

अभिनेता के भीतर से एक भविष्य के उपयोग के बारे में क्या? – sourcedelica

+0

आप अभी भी धागे को अवरुद्ध करने जा रहे हैं, जिनमें से आपके पास अनंत नहीं है। अभिनेता या वायदा समस्या नहीं है। –

+0

मुझे पूछने से नफरत है, क्या एक अभिनेता से क्लाइंट के रूप में HTTP कॉल का उपयोग करने के लिए एक उदाहरण है, मैं केवल एक ऐसा भविष्य ढूंढ सकता हूं जो भविष्य का उपयोग कर रहा है और इसके लिए इंतजार कर रहा है - जो थ्रेड को भी अवरुद्ध करता है। – Malax

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