演员如何识别自己?

时间:2018-09-20 18:09:21

标签: f# akka.net

我有以下代码,产生了许多工作者角色。工作者角色需要将消息发送到任务调度程序,以在空闲时请求更多任务。演员如何自我识别?

let system = System.create "System" <| Configuration.load ()

let taskDispatcher (mailbox: Actor<_>) = .... // Send message to processor to assign tasks

let processor (mailbox: Actor<MyTask>) =
    let rec loop () = actor {
        // ... task done. send message to the dispatcher for a new task
        return! loop ()
    }
    loop ()

let processors = [
    spawn system "System" processor
    spawn system "System" processor
    spawn system "System" processor
    // .... many more
]

1 个答案:

答案 0 :(得分:3)

您正在调用的参数private MapView mMapView; private MapController mMapController; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.osm_main); mMapView = (MapView) findViewById(R.id.mapview); mMapView.setTileSource(TileSourceFactory.DEFAULT_TILE_SOURCE); mMapView.setBuiltInZoomControls(true); mMapController = (MapController) mMapView.getController(); mMapController.setZoom(13); GeoPoint gPt = new GeoPoint(29.624471, 52.523935); mMapController.setCenter(gPt); } (一个mailbox)具有一个名为Actor<'t>的属性,该属性为您提供了与当前角色有关的Self。您还可以通过调用邮箱上的IActorRef方法来获取发送您当前正在处理的消息的actor的IActorRef。您可以使用这些属性来回复发件人,向自己发送消息,或将自己的演员引用发送给另一个演员,以便他们可以向您发送消息。

要注意的一件事是,在调用Sender时,您应该给每个演员一个唯一的名字。在同一角色系统中,不能有两个具有相同名称的角色。

这是使用以下属性的消息循环的简单示例:

spawn