代码之家  ›  专栏  ›  技术社区  ›  Jonas

与线程相比,演员是如何工作的?

  •  84
  • Jonas  · 技术社区  · 14 年前

    有什么好的和简短的解释如何 与线程相比是否有效?

    一个线程不能被视为一个参与者并向其他线程发送消息吗?我看到了一些不同,但我不太清楚。我能用吗 演员

    2 回复  |  直到 13 年前
        1
  •  79
  •   Community CDub    8 年前

    不过,我们不应该过于兴奋。actor模型(与某些指控相反)并没有使死锁成为不可能。actor模型也不能防止不同进程(例如消息队列)之间的资源争用。模型只有在某个级别以上才是“无锁”的。在较低的级别,为了协调消息队列,仍然需要锁定。

    一个线程不能被视为一个参与者并向其他线程发送消息吗?

    my question from a year ago .

    我可以通过使用不同的线程在任何语言中使用Actor模型吗?

    是的,但这需要更多的工作。你最喜欢的语言可能有一个消息传递库,所以这将是第一件要调查的事情。此外,还应该研究不可变数据结构的使用。注意,如果一个数据结构是不可变的,那么您基本上已经处理了“共享状态”问题——多个线程可以保存对不可变数据的引用,而不会发生任何不好的情况。演员语言也倾向于函数语言(erlang、scala)是有原因的。

        2
  •  2
  •   Bill la Forge    13 年前

    JActor(Java库)也不使用锁。只有一些原子的和并发的数据结构,还有一些信号量。消息传递速度约为每秒18亿条消息。

    https://github.com/laforge49/JActor