2010-08-21 51 views
4

我有一個高CPU /內存綁定的任務,我希望我的Scala程序並行執行。所以,我正在使用Actors框架(使用receive(while(true)循環)。我在actor上調用start方法併發送數千條消息來處理。如何充分利用所有使用Scala actor的核心?

在程序執行過程中(大約需要一個小時),只有100 - 120%的CPU被使用。該機器有8個內核。該演員是否應該派生出多個線程來使用所有8個內核,並且我應該看到使用率接近800%?

或者我應該實例化8個角色併發送每個消息的一部分(或者讓他們全部從某個併發隊列中讀取)?

謝謝。

+0

我點了勾號,是嗎? – Jija 2010-08-21 04:16:06

回答

6

沒有。一個參與者保證一次只能在一個線程上執行,所以訪問其狀態不需要同步。如果您想要將問題分散到多個核心中,則需要多個參與者。