这可能是一个愚蠢的问题,或者至少有一个关于演员模型的假设不正确,但也许有人可以教育我。假设我建立一个类似一个例子演员cl-actors例如文档cl-actors返回值
cl-user> (ql:quickload :cl-actors)
:CL-ACTORS
cl-user> (use-package :cl-actors)
T
cl-user> (defactor echo (stream) (message)
(format stream "~a~%" message)
next)
ECHO
cl-user> (defparameter e (echo :stream *standard-output*))
E
cl-user> (send e "Test message")
Test Message
; No value
中发现为什么会出现; No value
存在的,而不是NIL
?有没有一种方法来获取返回的值,而不会使用(bt:join-thread (cl-actors::get-thread e))
(我怀疑在任何情况下都不会完全按照我想要的)杀死actor线程?我特别希望获得回报价值,而不是玩with-output-to-string
或类似的技巧。
我试图解决的更一般问题,以防万一您关心,试图将来自演员的信息输出到客户端的cl-who
页面。东西沿线
(with-html-output (s)
(:h1 (send e "Test message")))
如果send
不返回任何东西,这显然不会工作。如果具体问题实际上被证明是愚蠢的,则欢迎指出更普遍的问题。
@wvxvw - Yup;这就是为什么我把关于我试图解决的更一般问题的说明放进去;有一群演员互动很好,但我试图将他们的网络连接到Hunchentoot(一个不是演员的HTTP服务器,因此向它发送消息不是解决方案)。如果我想要做这样的事情,我开始觉得我应该写一个快速的基于演员的服务器。 – Inaimathi 2012-07-21 14:24:37