Bir havuz koruyan bir gen_server işlemim var, her gelen istek için, bu gelen istek için bir eşleşme olup olmadığını görmek için havuzu incelemem gerekiyor, varsa, eşleşen havuzdan kaldırılır ve yanıtlar her iki istek için yapılır; Hiçbiri yoksa, yeni istek daha sonra inceleme için havuza konur. Erlang: Çok sayıda zamanlayıcı var mı?
biz mantığı
bir istek,R
, eşleştirilmiş olmadan
T
saniye havuzda oturur, ben "Senin için bir eşleşme bulamıyor" gibi bir şey söyleyerek
R
bir yanıt yapmak gerekir, gerektirir.
İdeal olarak, özellikle gelen her istek için zamanlayıcılarla bunu yapmak istiyorum, eğer bir eşleşme yoksa, daha önce olduğu gibi havuza koyun, ama aynı zamanda eğer zaman varsa gen_server'i kaldırması için bir zamanlayıcıyı da başlatın Tabii ki, daha sonra eşleşirse, zamanlayıcı iptal edilmelidir.
Benim endişem şu ki, Havuzda çok sayıda eşleşmemiş istek varsa, bu durumda çok fazla zamanlayıcı olacak, bu (çok fazla zamanlayıcı) bir sorun olur mu?
Zamanlayıcılar aynı şekilde çalışırlar, biliyorum: zamanlayıcı genellikle başlatılır ve performans penaltıları kullanılırken, binlerce işlemde 'erlang: send_after 'kullanılırken sık rastlanan bir durumdur. – Reith
@Reith 'erlang: send_after' kullanıyorum –