使用Tcl C APi实现读者-作家问题

时间:2018-11-28 20:19:09

标签: c tcl reader

我有以下问题(读者作者问题):

假设我创建了一个Tcl_Channel来控制stdout通道,这意味着打印到stdout通道的所有内容都经过my_output_function,这是我的{{ 1}}。
现在假设我将Tcl_Channel放在此函数的代码这一部分,因此该代码将是关键代码。 在这段代码中,我将在该通道上获得的缓冲区复制到系统中的某些缓冲区队列中,然后解锁Tcl_Mutex

现在,我想将带有复制缓冲区的队列发送到我的打印机(可以有很多,但现在只是一个),并由那些打印机一一打印在此队列中的字符串。

此问题类似于非常常见的读写器问题。
现在,我对Tcl C Api并不是很熟练,但是我看到有些Tcl C结构可能会像Tcl_Mutex(而不是使用Tcl_Condition)和cond_t这样对我有所帮助。

我的问题是:

  1. 有没有很好的参考代码或网站,我可以看到它实现了类似的功能?
  2. 我的代码仅在C和C ++中使用(我仅使用Tcl C API来确保与其余代码的一致性,并且因为我使用Tcl_Notify重定向了stdout),因此最好使用C /来实现C ++类型(与Tcl_Channelmutex_t等结合使用)
  3. (我认为最重要)如何使编写者始终处于等待下一个输入的条件?如果我创建两个线程,一个用于输入,另一个用于输出,则可以正常工作,或者最好是对接收输入的线程也调用打印机函数。

0 个答案:

没有答案