并发之actor

1调度
akka对actor有两种Dispatcher,1、fork-join-executor 2、thread-pool-executor
fork-join-executor:actor没有一个指定的线程,直到它有工作要做,这发生在actor中有收到消息和一个可用的线程。actor一旦阻塞,则释放线程,actor级别的阻塞不会引起上下文切换,意味这更多的actor同时工作。
thread-pool-executor:actor绑定线程(一对一),一旦阻塞就是线程级别,会引起上下文切换(上下文切换:http://blog.csdn.net/dongliheng/article/details/1663980),自然影响系统吞吐量(throughput)
fork-join-executor和thread-pool-executor的性能对比:http://letitcrash.com/post/17607272336/scalability-of-fork-join-pool

2actor执行,参考http://www.gtan.com/akka_doc/general/actors.html
每个Actor,单线程地依次执行发送给它的消息。(顺序执行)
不同的Actor可以同时执行它们的消息。(并发)

3Erlang和Scala对比,参考http://wenku.baidu.com/link?url=C3xuDHaw4voccw7eqonmYSeTiMpJYm6Rn7ZCmrgwskf1Rzb09PeDdkl1fNx7s6A44whhL_H3jJnfzMPjH7iZwk8AOnQjtViKzWQjz8ZZ5Ni
作者比较的Scala版本actor还是线程阻塞的。

posted @ 2014-05-14 15:26  lesliefan  阅读(445)  评论(0)    收藏  举报