據我所知,參與者基本上是在線程之上實現的輕量級線程,在一小羣共享線程上運行許多參與者。scala actors vs線程和阻止IO
鑑於這種情況,在actor中使用阻塞操作會阻塞底層線程。這不是一個正確性問題,因爲演員圖書館會根據需要產生更多的線索(是嗎?),但是最後你會得到很多很多的線索,否定了首先使用演員的好處。
鑑於此,當您需要執行此類IO操作時,演員如何工作?是否存在「actor-block」的操作,在讓線程繼續執行其他操作的同時暫停actor(就像阻塞操作在讓CPU繼續執行其他操作的同時掛起線程一樣),或者是用CPS編寫的一切演員?或者演員是不是很適合這種長時間運作?
背景:我有經驗編寫多線程的東西的經驗,並理解美麗的CPS /事件循環如何工作,但絕對沒有與演員合作的經驗,只是想從高層次理解它們如何適合,然後再深入代碼。
它應該涉及某些點分隔的延續,如http://jim-mcbeath.blogspot.com/2010/09/scala-coroutines.html中所述。或者也許使用非阻塞消息流? (http://blog.typesafe.com/non-blocking-message-flow-with-akka-actors) – VonC
請點擊這裏http://stackoverflow.com/questions/1512066/is-there-any-non看到我的回答-blocking-IO-開放源代碼實現換scalas,演員 –