Common-Lisp-Actors, 通用Lisp的actor系统

分享于 

3分钟阅读

GitHub

  繁體 雙語
An actor system for Common Lisp.
  • 源代码名称:Common-Lisp-Actors
  • 源代码网址:http://www.github.com/naveensundarg/Common-Lisp-Actors
  • Common-Lisp-Actors源代码文档
  • Common-Lisp-Actors源代码下载
  • Git URL:
    git://www.github.com/naveensundarg/Common-Lisp-Actors.git
    Git Clone代码到本地:
    git clone http://www.github.com/naveensundarg/Common-Lisp-Actors
    Subversion代码到本地:
    $ svn co --depth empty http://www.github.com/naveensundarg/Common-Lisp-Actors
    Checked out revision 1.
    $ cd repo
    $ svn up trunk
    

    这是一个简单且易于使用的Actor系统,在。

    设置

    需要波尔多螺纹。http://common-lisp.net/project/bordeaux-threads/ 2. 加载 actors.lisp 并开始使用它。 如果你有 Quicklisp,(ql:quickload"cl-actors")

    用法

    可以在以下位置找到一个小手册: http://www.cs.rpi.edu/~govinn/actors.pdf

    • 创建参与者类或者模板

       (defactor Actor-Class
       (state)
       (message-vars)
       behavior)
    • 创建角色实例

       (setq my-actor (Actor-Class (:state-var_1 value_1.. .
       :state-var_n value_n)))
    • 发送消息

       (send my-actor message_args)

    特性

    • 使用角色模型的并发。
    • 演员行为的动态变化。
    • 示例
    • 每次 2秒,持续打印计数,从 0开始,每 2秒递增一次。

    创建事件消息( sleep ),然后创建一个消息( 异步) ( send ),发送一个消息( 发送 t1 ) ;发送一个消息( 发送 t1 ) ;停止使用 actor

    
    
    
    
    - A print actor: Prints the message which was sent to it. A very useful utility actor. 
    
    
    
     ```lisp
    
    
     ;create the actor template
    
    
    (defactor print-actor () (val) (pr val) next)
    
    
    ; initialize a new instance
    
    
    (setf printer (print-actor))
    
    
    ;send values for printing
    
    
    (send printer"hello, world")
    
    
    
    
    • 阶乘计算参与者:名称表示全部:

    创建一个新实例,然后在下一个版本) 中创建一个新实例( 发送一个值) ) ) ) ) ) ) ) ) ) ) ) ) ) )

    
    
    
    
    - A nagger for fun : Works only in Mac OS X. Keeps saying out aloud"please work" every 10 seconds :)
    
    
    
     ```lisp
    
    
    (defactor nagger () () 
    
    
     (sleep 10)
    
    
     (trivial-shell:shell-command"say please work")
    
    
     (send self) next)
    
    
    ; anonymous actor, no way to stop the nagging 
    
    
    (send (nagger))
    
    
     ```
    
    
    
    ## More Resources
    
    
    
    1. [Meta-Circular Adventures in Functional Abstraction -Challenging Clojure in Common Lisp] (http://chriskohlhepp.wordpress.com/metacircular-adventures-in-functional-abstraction-challenging-clojure-in-common-lisp/)
    
    
    
    

    COM  COMM  SYS  系统  lis  act  
    相关文章