這可能是一個愚蠢的問題,或者至少有一個關於演員模型的假設不正確,但也許有人可以教育我。假設我建立一個類似一個例子演員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