gpt4 book ai didi

user-interface - 如果后端线程挂起,sbcl 调试 cl-gtk2-gk

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

一些示例,在主循环内直接 gtk2

我目前正在尝试在按键事件中添加代码

如果我在 guy 代码中出错,gui 线程将在 repl 中挂起,我仍然可以取回 repl 但我没有找到一种方法来继续 gui 开发而不重新启动 sbcl 并重新加载所有包

(defun run ()
(within-main-loop
; match the controls that matter to vars
(let ((window (builder-get-object builder "window"))
;....
; on window close keep the gtk running. helps with debugging
(g-signal-connect search-field "key-press-event" (lambda (w) (declare (ignore w)) (format "~a" "danut")))
(g-signal-connect window "destroy" (lambda (w) (declare (ignore w)) (leave-gtk-main)))
(widget-show window)))))

运行此函数时出现的错误是:

  • >调试器在线程 # 中的简单错误上调用:泛型函数没有适用的方法#带参数调用时(无)。

通过足够的工作,我可以修复错误,但每次我在 gui 中遇到问题时,我都无法让后端线程从它挂起的地方继续。我尝试了各种线程函数。 list-all-treads 将显示:

(#<SB-THREAD:THREAD "cl-gtk2 main thread" RUNNING {CF48EF1}>
#<SB-THREAD:THREAD "initial thread" RUNNING {AA5F591}>)

这就是我到目前为止所做的所有尝试:

(sb-thread:list-all-threads)

(sb-thread:interrupt-thread (first (sb-thread:list-all-threads)) #'leave-gtk-main)

(sb-thread:terminate-thread (first (sb-thread:list-all-threads)))

我只是不能把它解开。

您使用 cl-gtk2-gtk 的正常工作流程是什么,您如何避免这个问题?

最佳答案

使用sb-thread:release-foreground 在等待输入的线程之间切换。参见 Threads in SBCL示例 session 。

关于user-interface - 如果后端线程挂起,sbcl 调试 cl-gtk2-gk,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5545343/

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