我發現這個代碼示例,這是一個「網絡爬蟲」用Scala編寫的一部分:解釋這一併發Scala代碼
def getPageSizeConcurrently() = {
val caller = self
for (url <- urls) {
actor { caller ! (url, PageLoader.getPageSize(url)) }
}
for (i <- 1 to urls.size) {
receive {
case (url, size) =>
println(url + ": " + size)
case _ =>
println("Shouldn't happen")
}
}
}
我想知道如果我得到它的權利。
第二行「var caller = self」等於erlangs self(),它返回一個PID?
以actor爲開頭的第五行是創建一個新的actor-process,它使用tupel(url,PageLoader.getPageSize(url))向PID調用者發送消息?
此代碼不能沒有更多的上下文解釋。我的猜測是它使用(不推薦)的Scala演員庫。如果你想使用演員,我建議你使用[Akka](http://akka.io/)。 – EECOLOR