我在Scala中使用akka演員。我想知道是否有辦法讓演員在處理收到的消息時可以定期檢查其郵箱中的其他消息,並在此消息後可以更改其變量。如何定期檢查演員郵箱並更改scala中的變量
如A方案:
class Actor1 (constructors){
def receive={
case "go" => run() //the actor starts
case "alter variables" // a new message is stashed in mailbox
}
def run={
//do stuff
check(mailbox) //while the porocessing of the "go" message
// is not finished
if ("alter variables" in mailbox) {
change a variable value
}
}
}
我不知道你爲什麼想這樣做,但我認爲這會打破Akka試圖強制執行的設計模式,所以我不鼓勵這樣做。通過實現你自己的隊列,你可以通過實現自己的隊列來安裝類似的東西,並且有一些其他的機制來檢查隊列。 – childofsoong
這是不可能的。參與者一次處理*一條消息*。這是他們如何保證併發環境中安全的可變狀態。 – Ryan