Dopo aver letto sull'uso di react
in attori in Scala, ho pensato che lo react
condividesse la stessa discussione dato che non c'erano più react
in sospeso. Non sembra essere il caso.Quando vengono creati i thread per gli attori di Scala?
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
Qualcuno può spiegare perché queste react
's sono in esecuzione su diversi fili e quando un nuovo thread viene creato per un attore con react
?
Ho letto da qualche parte react
è basato su eventi, e ho preso questo per dire che "reagire attori" condividevano un thread e se uno stava "reagendo" l'altro "reagiva attori" sarebbe stato accodato fino a quando il primo era stato fatto. Ora penso di sbagliarmi. Come funziona e come è diverso da ricevere?
vedi anche http://stackoverflow.com/questions/1251666/scala- attori-ricevere-vs-reagire –