Mam proces gen_server, który utrzymuje pulę, dla każdego przychodzącego żądania, muszę zbadać pulę, aby sprawdzić, czy istnieje dopasowanie dla tego przychodzącego żądania, jeśli istnieje, dopasowany jest usuwany z puli i odpowiedzi są składane do obu wniosków; jeśli go nie ma, nowy wniosek jest przekazywany do puli w celu późniejszego zbadania.Erlang: czy wiele timerów jest ok?
biz logika wymaga, jeżeli wniosek, R
, siedzi w basenie dla T
sekund bez zostały dopasowane, muszę złożyć odpowiedź na R
mówiąc coś w stylu „nie mogę znaleźć dopasowanie dla ciebie”.
Idealnie, chcę to zrobić z timerem, w szczególności dla każdego przychodzącego żądania, jeśli nie ma dopasowania, umieść go w puli jak poprzednio, ale także uruchom zegar, aby nakazał serwerowi gen_server go usunąć, jeśli czas jest w górę, oczywiście, jeśli zostanie dopasowany później, timer powinien zostać anulowany.
Moim zmartwieniem jest to, że jeśli w puli jest wiele nieprzypisanych żądań, to będzie dużo liczników czasu, czy to (zbyt wiele timerów) stanie się problemem?
Nie wszystkie timery działają tak samo, ja wiem, że 'timer: start' jest generalnie unikany i miał karę wykonania, podczas gdy używanie' erlang: send_after' w tysiącach procesów wydaje się być powszechne. – Reith
@Reith Używam 'erlang: send_after' –