मेरे पास एक आने वाली अनुरोध के लिए एक पूल बनाए रखने के लिए एक gen_server प्रक्रिया है, मुझे पूल की जांच करने की आवश्यकता है यह देखने के लिए कि क्या इनकमिंग अनुरोध के लिए कोई मिलान है, यदि कोई है, मिलान किए गए पूल को पूल से हटा दिया गया है और जवाब दोनों अनुरोधों के लिए बने होते हैं; यदि कोई नहीं है, तो बाद में परीक्षा के लिए पूल में नया अनुरोध लगाया गया है।एरलांग: बहुत सारे टाइमर ठीक है?
बिज़ तर्क की आवश्यकता है कि, अगर एक अनुरोध, R
, बिना मिलान किया गया T
सेकंड के लिए पूल में बैठता है, मैं की तरह "मैं तुम्हारे लिए एक मैच नहीं मिल सकता है" कुछ कह R
के लिए एक जवाब बनाने की जरूरत है।
आदर्श रूप से, मैं टाइमर के साथ ऐसा करना चाहता हूं, विशेष रूप से, प्रत्येक आने वाले अनुरोध के लिए, यदि कोई मैच नहीं है, तो इसे पहले पूल में डाल दें, लेकिन समय-समय पर इसे हटाने के लिए gen_server को बताने के लिए टाइमर शुरू करें बेशक, अगर यह बाद में मेल खाता है, टाइमर रद्द किया जाना चाहिए।
मेरी चिंता यह है कि, यदि पूल में बहुत बेजोड़ अनुरोध हैं, तो बहुत सारे चलने वाले टाइमर होंगे, क्या यह (बहुत अधिक टाइमर) एक समस्या बन जाएगा?
सभी टाइमर समान तरीके से काम नहीं करते हैं, मुझे पता है कि टाइमर: स्टार्ट' आम तौर पर टाला जाता है और प्रदर्शन दंड होता है, जबकि हजारों प्रक्रियाओं में 'erlang: send_after' का उपयोग करते हुए आम लगता है। – Reith
@ रीथ मैं 'erlang का उपयोग कर रहा हूं: send_after' –