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