小编Eri*_*son的帖子

一个Tcl线程如何在另一个Tcl线程中引发事件?

我有一个带有多个I/O接口的系统,我正在将所有这些接口的输出收集到一个公共日志中.其中两个接口是通过行为良好的通道打开的,这些通道作为类文件对象打开,并且可以在事件基础上使用"fileevent readable"进行管理.另外两个是问题.

这些是供应商提供的库,其他人已经将其包含在Tcl包中(snoopy,FWIW).但是,唯一的读取访问是阻塞调用,并且程序包中没有任何内容会导致事件等同于fileevent.

我已经弄清楚如何生成一个单独的线程来阻止读取,拉出结果,并将其放入主线程的消息队列中.但是在读取队列时使用主线程块似乎会破坏目的,特别是因为它必须阻塞两个队列.而且我无法让读者生成一个可以触发主线程来读取队列的事件.

到目前为止,我已经查看了tcl.tk wiki无济于事.我已经尝试使用uevent库在消息推送上生成一个事件,但事件转到写入线程而不是读取线程,这实际上没有帮助.似乎应该有一些与Thread条件变量相关的解决方案,但到目前为止,我还没有找到适合该库使用的设计模式.

如果所有其他方法都失败了,我将回到Tk事件,但我试图让Tk脱离这个,因为它意味着是一个没有GUI的自动化系统,任何提及Tk都会将tclsh推入愿望并弹出一个GUI窗口.

我觉得我很亲密,但只是缺少一些东西.

events multithreading tcl

2
推荐指数
1
解决办法
2013
查看次数

标签 统计

events ×1

multithreading ×1

tcl ×1