erlang - Notify and stop gen_event manager atomically -


जब मेरे gen_event प्रबंधक प्रक्रिया से कोई विशेष संदेश प्राप्त होता है, तो मैं चाहता हूं कि वह सब के बाद बंद हो हैंडलर ने इसे संभाला है और इससे पहले कि वे किसी भी अन्य ईवेंट प्राप्त करते हैं और संभालते हैं। एकमात्र तरीका मुझे मिल सकता है:

  -मॉड्यूल (मैनेजर)। ... रोक (कारण) - & gt; Gen_event: sync_notify (प्रबंधक, {स्टॉप, कारण}), gen_event: stop (manager)।   

लेकिन इसके लिए सभी नियंत्रक को remove_handler से handle_event ({stop, reason}, state) वापस करने की आवश्यकता है, अन्यथा वे एक घटना sync_notify और रोक से पहले एक अलग प्रक्रिया से भेजी गई। मैं एक ऐसे दृष्टिकोण का चुनाव करना पसंद करता हूं जो प्रबंधनकर्ताओं पर कोई आवश्यकता नहीं डालता।

जहां तक ​​मुझे पता है, कोई भी ऐसा करने का कोई तरीका नहीं है जो आप उपयोग कर रहे हैं एक तरह से संभालने के लिए जो वास्तव में एक कॉल तक सीमित है, केवल स्पष्ट रूप से निकास (पीड, कारण) के साथ घटना प्रबंधक को मारने या इसे अपने पर्यवेक्षक द्वारा बंद करने का आदेश देने के बाहर।

Comments