gpt4 book ai didi

multithreading - Common Lisp 中的WITH-OUTPUT-TO-STRING 与多线程

转载 作者:行者123 更新时间:2023-12-03 07:58:05 25 4
gpt4 key购买 nike

我想做一些具有以下意义的事情:

(with-output-to-string (*standard-output*)
(bt:join-thread
(bt:make-thread
(lambda ()
(format *standard-output* "Hello World")))))
;=> "" (actual output)
;=> "Hello World" (expected output)

根据我的理解,这是行不通的,因为通过线程外部的 with-output-to-string 动态反弹的 *standard-output* 不会占用线程内的效果。有哪些可能且值得推荐的方法?

本质上,我想捕获由另一个线程写入 *standard-output* 的输出。

最佳答案

可以将特殊变量重新绑定(bind)为线程本地:

(with-output-to-string (*standard-output*)
(bt:join-thread
(bt:make-thread
(lambda ()
(format *standard-output* "Hello World"))
:initial-bindings `((*standard-output* . ,*standard-output*)))))

*initial-bindings* 是一个带有 (variable . value) 元素的列表。

关于multithreading - Common Lisp 中的WITH-OUTPUT-TO-STRING 与多线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75479871/

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