簡體   English   中英

GPars-如何知道演員是否忙?

[英]GPars - How do I know if actor is busy?

我正在嘗試在Java中使用GPar處理某些類型的消息。 每種消息類型都有一個參與者。

但是,消息處理會花費很多時間,而消息會不斷發送。 當演員忙時,我需要忽略即將到來的消息(只是將它們丟棄)。

我怎么知道GPars演員是否忙? 我知道Actor.isActive()方法,但是我不太確定這是事實(JavaDoc非常模糊且不清楚),而且我找不到任何有用的信息。

恐怕沒有內置的方法可以確定這一點。 您可能必須基於CountdownLatches自己實現繁忙控制算法。

通常,這可能會出現問題,因為參與者一次只能處理一條消息,無論您要執行什么解決方案,都會受到限制。 例如,您可以在演員,主管和工人中擁有演員。

工人演員是實際工作的人。 發生的事情是將工作發送給主管。 主管具有布爾變量,例如isBusy,該變量最初為false。 收到工作后,主管將變量設置為true,然后將工作傳遞給工人。 工作完成后,工作人員將結果發送回主管,主管將isBusy設置為false並返回結果。

如果isBusy為false時出現另一條消息,那么主管可以只發送一條消息,例如isBusy消息,或者什么也不做,這就是您想要的內容。

請注意,如果工作程序崩潰或重新啟動,則isBusy仍為true。 如果它可以滿足您的需求,則需要考慮該解決方案。 也許會有一個郵箱,對此我不知道會更好。

無論您做什么,都應盡最大努力避免造成可能使演員系統處於糟糕狀態,讓您好運的情況。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM