gpt4 book ai didi

multithreading - cl-actors 返回值

转载 作者:太空宇宙 更新时间:2023-11-03 18:55:30 25 4
gpt4 key购买 nike

这可能是一个愚蠢的问题,或者至少是一个对 actors 模型有一些错误假设的问题,但也许有人可以教育我。假设我设置了一个类似于 cl-actors 中的示例 Actor 示例文档

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

为什么会有;没有值而不是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 没有返回任何东西,这显然是行不通的。如果特定问题实际上被证明是愚蠢的,欢迎针对更普遍的问题提出建议。

最佳答案

您将流 (*STANDARD-OUTPUT*) 传递给您的 actor 并将字符串打印到该流。如果您传递 Web 请求输出流,您将在那里打印字符串。如果您想将数据返回给调用 actor 以对其执行某些操作,则应传递其 id 并将数据发送回给它。

关于multithreading - cl-actors 返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11589367/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com