我有以下问题(读者作者问题):
假设我创建了一个Tcl_Channel
来控制stdout
通道,这意味着打印到stdout
通道的所有内容都经过my_output_function
,这是我的{{ 1}}。
现在假设我将Tcl_Channel
放在此函数的代码这一部分,因此该代码将是关键代码。
在这段代码中,我将在该通道上获得的缓冲区复制到系统中的某些缓冲区队列中,然后解锁Tcl_Mutex
。
现在,我想将带有复制缓冲区的队列发送到我的打印机(可以有很多,但现在只是一个),并由那些打印机一一打印在此队列中的字符串。
此问题类似于非常常见的读写器问题。
现在,我对Tcl C Api并不是很熟练,但是我看到有些Tcl C结构可能会像Tcl_Mutex
(而不是使用Tcl_Condition
)和cond_t
这样对我有所帮助。
我的问题是:
Tcl_Notify
重定向了stdout),因此最好使用C /来实现C ++类型(与Tcl_Channel
和mutex_t
等结合使用)