3

ここで、アクターが他のアクターにメッセージを送信し、同時に他のアクターからメッセージを受信できるようにしたいと考えています。Akka でマルチスレッドを使用する必要があるようです。以下は私のコードです:

def receive = {
    case Rumor => {     
        count+=1; 
            if ...
            else self ! Sleep(FiniteDuration(20, "millis"))
    }
    case Sleep(duration) => {
        case object WakeUp
        context.system.scheduler.scheduleOnce(duration, self, WakeUp)
        context.become(
        {
            case WakeUp => context.unbecome()
                           others ! Rumor
        }, discardOld = false   
        )
    }       
    case _=> .....
 }

私の問題は次のとおりです。

1) 自分のコードが期待どおりに機能するかどうかわかりません。アクター内で Akka スケジューラーを使用する参照

2) 私はすでに輸入しています

import scala.math._
import akka.actor._
import scala.util.Random
import scala.concurrent.duration._

ただし、コンパイラは引き続きエラーを報告します。

error: Cannot find an implicit ExecutionContext, either require one yourself or import ExecutionContext.Implicits.global
        context.system.scheduler.scheduleOnce(duration, self, WakeUp)
4

3 に答える 3

0

ルーターを使用する: 例

val router1 = system.actorOf(Props[SomeMultiThreadActorClass].withRouter(RoundRobinRouter(nrOfInstances = 5)))

あるスレッドが別のスレッドに悪影響を及ぼさないように、アプリケーション ドメインを分離することを検討してください (プラットフォームで許可されている場合)。

于 2015-08-25T11:06:30.320 に答える