¿Cuál es la diferencia de usar loop en lugar de while (true) mientras usa receive with actors? Loop parece funcionar mucho más rápido, pero ¿por qué y qué está pasando debajo del capó?¿Qué sucede cuando utilizamos loop en lugar de while (true) con scala actors?
¿Hay algo malo para usar el bucle en lugar de mientras (verdadero)?
Más sobre el contexto. Estoy haciendo pruebas de rendimiento dentro del código simple ping/pong. Y estoy usando recibir.
Ésta es la clase de ping:
class ReceivePing(
count : Int,
pong : Actor
) extends Actor {def act() {
var pingsLeft = count - 1
pong ! Start
pong ! ReceivePing
while(true) {
receive {
case ReceivePong =>
if (pingsLeft % 10000 == 0)
Console.println("ReceivePing: pong")
if (pingsLeft > 0) {
pong ! ReceivePing
pingsLeft -= 1
} else {
Console.println("ReceivePing: stop")
pong ! Stop
exit()
}
}
}}}
en lugar de while (true) se realiza mejor con bucle.
Gracias
Entonces, significa que recibir o reaccionar no tiene ningún impacto en el hilo. las palabras clave "while" y "loop" controlan los hilos. – Zerdush
@Zerdush No, 'loop' y' reaccionar' tienen un impacto en el hilo; ambos lo lanzan. Ni 'while' ni' receive' liberan el hilo. –