簡體   English   中英

Akka封鎖要求會封鎖其他演員嗎?

[英]Does an Akka Blocking Request Block Other Actors?

說我們有:

  • 線程1包含Actor A,B和C。
  • 線程2包含ActorY。
  • 線程3包含ActorZ。
  • 演員A和演員B正在監聽演員Y的消息。

然后,演員C向演員Z發出阻止請求。

在請求返回之前,Actor Y向Actor A和B發送一些消息。

演員A和B可以在演員C完成之前收到消息嗎?

還是演員A和B可以接收到消息之前,演員C 必須完成?

我包括Actor Y,以允許它在Z處理來自C的請求時發送消息的可能性。

所有線程都在不同的物理核心上-它們並行運行。

Actor可以在任何線程上處理隊列中的消息-默認情況下,它們不會固定在具體線程上(如果您不使用固定分配器)。 簡單地說,來自同一隊列的不同消息可能在不同的線程上處理(由調度程序選擇)。

我想用“線程容器參與者”來指的是在一到幾個時刻(消息)內的容器。 因為調度程序是自由的(默認情況下),所以可以為任何參與者/郵箱的任何消息選擇任何線程。 實際上,它有時會選擇相同的線程,但並非總是如此。

因此,如果一個線程被阻止,調度程序(默認情況下)將轉到另一個線程。 如果您有足夠的線程,則AB可能會在C完成之前收到消息。

但是,阻塞本身對Akka來說是個壞習慣( 阻塞需要仔細的管理 )。

讓它反應!

暫無
暫無

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

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