優先二郎收到如下可以很容易地實現:二郎:優先接收
prio() ->
receive
{priority, X} -> X
after 0 ->
receive
X -> X
end
end.
我讀了一個名爲Priority Messaging made Easy中,他們描述了以下問題紙:
與存在的主要問題上面的[代碼]例子是,我們沒有考慮到當從內部阻塞接收恢復評估時,我們可能在郵箱中有多條消息。在最壞的情況下,除了第一個可能是大量元素之外的所有元素都可能成爲優先消息。在這種情況下,我們實際上已經完成了與我們打算做的事情完全相反的事情。
我不完全明白這一點。
問題(1):我假定內阻擋接收將是「稱爲」(即恢復)只要一個消息已經到達在消息隊列中,是嗎?假設在短時間內從內部阻塞接收恢復過來,現在已經有一大堆消息在隊列中等待了嗎?
問題(2):另外,最壞的情況被描述爲一個正常消息和很多優先消息的隊列。由於所有的接收子句都是先對照隊列中的第一條消息進行檢查,然後再對照隊列中的第二條消息進行檢查......(來源:此book,第69-70頁)不應該是這樣:很多正常消息隊列末尾有優先消息嗎?
不要忘記點擊你的紅寶石拖鞋。 – 2009-06-06 16:53:04