के साथ थ्रेड सुरक्षित कोरआउट्स क्या कोई तरीका है कि मैं बूस्ट :: एएसओओ के साथ थ्रेड-सुरक्षित कोरआउटिन रख सकता हूं?एएसओ
मुझे एकाधिक धागे पर चलने के लिए एक io_service
चाहिए और मेरे कुछ हैंडलर कोरआउट हैं।
Boost.Coroutine एक समाधान हो करने के लिए प्रतीत होता है, लेकिन वे document है कि वे एक coroutine कि एक अलग थ्रेड में शुरू किया गया था शुरू करने का समर्थन नहीं करते।
जहाँ तक मुझे पता के रूप में केवल दो इस समस्या का समाधान संभव नहीं है:
- coroutines प्रयोग न करें। अधिक वर्बोज़ (यहां तक कि लैम्ब्डा के साथ) का प्रयोग करें, लेकिन राज्य को स्टोर करने वाले कॉलबैक को चेन करने की समान रूप से कार्यात्मक विधि का उपयोग करें।
- प्रत्येक हैंडलर को केवल एक थ्रेड में चलाने के लिए मजबूर करें। मुझे पता है कि प्रत्येक थ्रेड के लिए बस एक अलग io_service है। एक तरफ के रूप में, क्या एक आसान तरीका है, io_service :: स्ट्रैंड के समान, हैंडलर के एक सेट को उसी धागे में चलाने के लिए मजबूर करने के लिए?
किसी भी तरह से अच्छे समाधान नहीं हैं। एक समाधान में मैं कोरआउट को खो देता हूं। दूसरी तरफ मैं अपनी बहुसंख्यक क्षमता खो देता हूं।
FYI: क्या आपने http://blog.think-async.com/2009/08/secret-sauce-revealed.html और http://blog.think-async.com/2010/03/potted- गाइड-टू-स्टैकलेस-coroutines.html? – Ralf
@ राल्फ हाँ मैंने देखा है, यही कारण है कि मैं इस सवाल से पूछ रहा हूं। एक बहुत अच्छा विचार लगता है, और एसिंक्रोनस कोड लिखने का एक आसान तरीका लगता है। – Lalaland