函數eventloop
在Scala中做什麼Actors什麼是有用的?函數「eventloop」在Scala Actor中做了什麼?
7
A
回答
9
eventloop
作用與loop
和react
相似。 loop
和eventloop
之間的區別在於,loop
實際上並沒有遞歸地調用主體(以防止基於線程的actor的堆棧溢出),而是安排從郵箱處理(反應/接收)下一條消息,並完成執行當前處理程序拋出異常,清除調用堆棧。
eventloop
遞歸處理使用react
消息 - 在react
情況下,它是安全的(和堆棧沒有得到溢流),因爲react
身體(!但不receive
)總是異常結束,在大多數情況下,並計劃下一個循環,以保證所有參與者能夠公平地訪問線程池。因此,eventloop
只能用於事件驅動的參與者。
import scala.actors._
import Actor._
class EventLoop extends Actor {
def act = eventloop{
case msg => println("Received " + msg)
}
}
3
也許this thread可以給一些細節:
一對演員很重要的動機是他們讓你 避免控制反轉意味着至多有一個線程 在一個時間一個演員內部執行,並用戶通過編寫一個在控制流中顯式地等待消息等待 消息的直線程序來選擇何時發生這種情況。
在這個模型中,人們通常希望避免將回調函數傳遞給異步調用它們的其他線程;相反,其他線程只能通過向其發送消息來與演員互動。 如果回調類似的行爲被通緝那麼下面的模式實現它 在一個線程安全的方式:
def eventloop() {
react {
case Event1 =>
// handle Event1
eventloop()
...
case Eventn =>
// handle Eventn
eventloop()
} }
這種模式在
Actor.eventloop
作爲一個抽象的操作:
import scala.actors.Actor._
eventloop {
case Event1 =>
// handle Event1
case Eventn =>
// handle Eventn
}
請注意,不需要對某些封閉函數進行尾調用任何更多。
話雖這麼說,從2008年考慮螺紋日期和Scala Actor API guide沒有提到eventloop
一次,也許這不使用頻繁。
Vasil Remeniuk熟練的詳細信息eventloop
在his answer (+1)中的用法,並在問題「Client-Server example with Scala actors」中給出具體示例。
相關問題
- 1. Predef.identity在scala中做了什麼?
- 2. Reorder()函數在Joomla中做了什麼?
- 3. 函數中的函數在nodejs中做了什麼?
- 4. 在Scala Actor中做空閒處理的最簡單方法是什麼?
- 5. 這個LSB函數做了什麼?
- 6. 這個callback()函數做了什麼?
- 7. GTK +:gtk_ui_manager_add_ui_from_resource函數做了什麼?
- 8. 'get_page_by_path'wordpress函數到底做了什麼?
- 9. iter_content()函數到底做了什麼?
- 10. R - 這個tapply()函數做了什麼?
- 11. 這個ruby函數做了什麼?
- 12. 回調添加函數做了什麼?
- 13. 這個C++函數做了什麼?
- 14. 這個get_text函數做了什麼?
- 15. swing utilities.invokelater函數做了什麼?
- 16. 這個函數做了什麼細節?
- 17. R函數`poly`真的做了什麼?
- 18. 我在做什麼錯? (有了Scala的超類參數)
- 19. k參數在排序函數(Linux Bash Scripting)中做了什麼?
- 20. 參數formattingEnabled在Binding的構造函數中做了什麼?
- 21. `:load`做什麼,它在Scala REPL中不做什麼?
- 22. scalaz中scalaz.syntax.std.OptionOps.cata做了什麼?
- 23. 爲什麼settimeout塊eventloop
- 24. 「+」在CSS中做了什麼?
- 25. %%在printf中做了什麼?
- 26. *在CSS中做了什麼?
- 27. 這個片段在scala中做了些什麼?
- 28. 「authResponse」參數在FB.init()中做了什麼?
- 29. y參數在sklearn.decomposition.DicitonaryLearning.fit中做了什麼?
- 30. 'Paint'參數在android.graphics.Canvas.drawBitmap()中做了什麼?