¿Cuál es la mejor manera de que un actor duerma? Tengo actores establecidos como agentes que desean mantener diferentes partes de una base de datos (incluida la obtención de datos de fuentes externas). Por una serie de razones (que incluyen no sobrecargar la base de datos o las comunicaciones y problemas generales de carga), quiero que los actores duerman entre cada operación. Estoy viendo algo así como 10 objetos de actor.¿Actores dormidos?
Los actores se ejecutarán bastante infinitamente, ya que siempre habrá nuevos datos entrantes, o sentados en una mesa esperando a ser propagados a otras partes de la base de datos, etc. La idea es que la base de datos sea tan completa como posible en cualquier punto en el tiempo.
Podría hacer esto con un bucle infinito y un descanso al final de cada ciclo, pero de acuerdo con http://www.scala-lang.org/node/242 los actores usan un grupo de hilos que se expande cada vez que se bloquean todos los hilos. Así que me imagino que un hilo de dormir en cada actor sería una mala idea, ya que desperdiciaría los hilos innecesariamente.
¿Podría tener un actor central con su propio bucle que envía mensajes a los suscriptores en un reloj (como observadores de reloj de eventos asincrónicos)?
¿Alguien ha hecho algo similar o tiene alguna sugerencia? Perdón por información adicional (tal vez superflua).
Saludos
Joe
+1 para mostrar las importaciones y tener un ejemplo de ejecución de REPL. – opyate
+1 este truco funciona perfecto –