gpt4 book ai didi

multithreading - 防止tcl线程被主事件循环阻塞

转载 作者:行者123 更新时间:2023-12-03 13:14:14 26 4
gpt4 key购买 nike

我试图连续运行一个线程,并且不让它被tcl主事件循环阻塞。
这是我要执行的操作的一个简单示例:

#!/bin/sh
#\
exec tclsh "$0" "$@"

package require Thread

set ::a_thread [thread::create {thread::wait}]

proc start_a {} {
thread::send $::a_thread {
puts "Running a thread"
}
after 1000 a_start
}

proc infinite_loop {} {
while {1} {
puts "Loop"
after 500
}
}

start_a
infinite_loop

vwait forever

在此代码中, infinite_loop proc被调用,主事件循环无限运行。如果 a_thread仍然可以在后台运行,我希望这样做。我怎样才能做到这一点?

最佳答案

主事件循环不会阻塞您的线程。取而代之的是,您使用主事件循环来规避要在线程中执行的脚本。而是在线程本身中运行调度程序:

经过测试的代码可以正常工作:

thread::send $::a_thread {
proc loop {} {
puts "running a thread"
after 1000 loop
}
loop
}

while 1 {
puts "loop"
after 500
}

关于multithreading - 防止tcl线程被主事件循环阻塞,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4221905/

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