Tôi đã suy nghĩ, tôi muốn có thể gán các thông điệp khác nhau các ưu tiên khác nhau khi nói chuyện với một quá trình xóa.Có cách nào thông minh để đưa ra các thông điệp ưu tiên khác nhau không?
Tôi muốn có thể xử lý các thư có mức ưu tiên cao đầu tiên và sau đó ưu tiên thấp một lần.
phương pháp khác nhau tôi đã cố gắng, cách tiếp cận 1:
loop() ->
receive
{high, Msg} ->
Do something with the message,
loop()
after 0 ->
ok
end,
receive
{low, Msg} ->
Do something with the message,
loop()
after 0 ->
loop()
end.
này không được công việc, nhưng nó là yên tĩnh chậm. Tôi đoán nhận được phải xem xét thông qua tất cả các tin nhắn để xem nếu có một 'cao' tin nhắn mỗi khi nó chạy.
Phương pháp 2:
Tôi cũng đã cố gắng thực hiện một cách tiếp cận kiểu hòa giải nơi thư bị bộ đầu tiên vào một 'trước bàn' the 'trước bàn' sau đó gửi tin nhắn cho một trong hai cao hàng đợi hay -queue thấp, và sau đó cuối cùng là một 'công nhân' chủ đề được yêu cầu công việc từ firsk the-hàng đợi cao, và nếu hàng đợi mà không có gì, sau đó từ-queue thấp, như ilustrated đây:
này có Nhược điểm của việc phải đợi yêu cầu để có được mặt trước của các hàng đợi khác nhau, có lẽ một số loại hệ thống ưu tiên sẽ hoạt động:)
Có cách nào thông minh hơn để làm điều gì đó như thế này không?
Awesome, Fhat là chỉ là những gì tôi đang tìm kiếm :-) –
Liệu nhận hồ sơ sau khi thông điệp 'không quan trọng' được đọc? Vì vậy, nếu tôi không có bất cứ điều gì quan trọng tại thời điểm này nó sẽ tiếp tục chờ đợi một cái quan trọng sau khi đọc những người không quan trọng? – Bula