Sự khác biệt của việc sử dụng vòng lặp thay vì trong khi (true) khi sử dụng nhận được với các tác nhân. Vòng lặp dường như hoạt động nhanh hơn nhiều, nhưng tại sao, và những gì đang xảy ra dưới nắp ca-pô?Điều gì sẽ xảy ra khi chúng ta sử dụng vòng lặp thay vì trong khi (đúng) với các diễn viên scala?
Có điều gì xấu để sử dụng vòng lặp thay vì trong khi (đúng) không?
Tìm hiểu thêm về ngữ cảnh. Tôi đang thực hiện các thử nghiệm hiệu suất trong mã ping/pong đơn giản. Và tôi đang sử dụng nhận.
Đây là lớp 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()
}
}
}}}
thay vì while (true) nó thực hiện tốt hơn với vòng lặp.
Cảm ơn
Vì vậy, nó có nghĩa là nhận được hoặc phản ứng không có bất kỳ tác động trên thread. "trong khi" và "vòng lặp" từ khóa đang kiểm soát các chủ đề. – Zerdush
@ Zerdush Không, 'loop' và' react' có tác động lên luồng - cả hai đều giải phóng nó. Cả 'while' lẫn' receive' đều không giải phóng luồng. –