Después de leer sobre el uso de react
en los actores de Scala, pensé que react
compartiría el mismo hilo dado que no había múltiples react
pendientes. No parece ser el caso.¿Cuándo se crean los hilos para las reacciones de Scala actor?
import scala.actors.Actor
import scala.actors.Actor._
class SleepyReactor extends Actor {
def act() {
loop {
react {
case x => {
println("reacting to %s on thread %s".format(x, Thread.currentThread.getName))
Thread.sleep(1000)
println("done with " + x)
}
}
}
}
}
val sleepyOne = new SleepyReactor
sleepyOne.start
sleepyOne ! "first" // runs on thread-5
// wait until completion
sleepyOne ! "second" // runs on thread-3
¿Puede alguien explicar por qué estos react
's se ejecutan en diferentes hilos y cuando se crea un nuevo hilo para un actor con react
?
He leído en algún lugar react
basado en eventos, y lo tomé como que los "actores reaccionan" compartían un hilo y si uno estaba "reaccionando" los otros "actores reactivos" se pondrían en cola hasta que terminara el primero. Ahora pienso que estoy equivocado. ¿Cómo funciona esto, y cómo es diferente de recibir?
ver también http://stackoverflow.com/questions/1251666/scala- actores-recibir-contra-reaccionar –