首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

scala兑现actor间同步和异步的信息传输

2013-07-08 
scala实现actor间同步和异步的信息传输package actor_testimport scala.actors.Actorimport scala.actors.

scala实现actor间同步和异步的信息传输
package actor_testimport scala.actors.Actorimport scala.actors.Actor._// define a messageclass FromXX(msg:String, idx:Int) {val msg_ = msgval idx_ = idx}object Stopclass XX(var count: Int, yy: Actor) extends Actor { def act() { for (idx <- 0 to count) { val tmp = new FromXX("MSG " + idx + " FROM XX", idx) //yy !? tmp // synchronous yy ! tmp // asynchronous Console.println("MSG " + idx + " SENT") } Console.println("XX HAS STOP SEND MSG TO YY!") yy ! Stop }}class YY extends Actor { def act() { while (true) { receive { case t:FromXX => Console.println("YY RECEIVE: " + t.msg_) sender ! 0 case Stop => Console.println("YY RECEIVE STOP ORDRE!") exit() } } }}object test extends Application { val yy = new YY val xx = new XX(3, yy) xx.start yy.start}

?

异步运行结果:

?

?

MSG 0 SENT

YY RECEIVE: MSG 0 FROM XX

YY RECEIVE: MSG 1 FROM XX

MSG 1 SENT

MSG 2 SENT

YY RECEIVE: MSG 2 FROM XX

MSG 3 SENT

YY RECEIVE: MSG 3 FROM XX

XX HAS STOP SEND MSG TO YY!

YY RECEIVE STOP ORDRE!

?

同步运行结果:

?

YY RECEIVE: MSG 0 FROM XX

MSG 0 SENT

YY RECEIVE: MSG 1 FROM XX

MSG 1 SENT

YY RECEIVE: MSG 2 FROM XX

MSG 2 SENT

YY RECEIVE: MSG 3 FROM XX

MSG 3 SENT

XX HAS STOP SEND MSG TO YY!

YY RECEIVE STOP ORDRE!

?

我们也可以看到actor的一些特性,

例如actor A发给actor B的消息,B必须是按顺序收到的。

参考

http://www.scala-lang.org/node/242

http://docs.scala-lang.org/overviews/core/actors.html

?

热点排行