Реализация проблемы читателей - писателей с использованием Tcl C APi

У меня есть следующая проблема (проблема читателей писателей):

Предположим, я создал Tcl_Channel который контролирует stdout канал, то есть все, что печатается на stdout канал проходит my_output_function это часть моего Tcl_Channel,
Теперь предположим, что я ставлю Tcl_Mutex на этой части кода этой функции, так что этот код будет критическим кодом. В этом коде я копирую буфер, полученный на этом канале, в некоторую очередь буферов в моей системе, а затем разблокирую Tcl_Mutex,

Теперь я хочу отправить очередь со скопированными буферами на мои принтеры (может быть много, но пока это только одна) и распечатать строки в этой очереди по очереди этими принтерами.

Эта проблема похожа на проблему читателей-писателей, которая очень распространена.
Я не очень разбираюсь в Tcl C Api, но я видел некоторые структуры Tcl C, которые, вероятно, помогут мне Tcl_Condition (Вместо того, чтобы использовать cond_t) а также Tcl_Notify,

Мои вопросы:

  1. Есть ли хороший справочный код или веб-сайт, который я вижу, реализуя что-то похожее на это?
  2. мой код только на C и C++ (я использовал Tcl C API только для согласованности с остальной частью моего кода и потому что я перенаправил стандартный вывод, используя Tcl_Channel) так что лучше реализовать его, используя типы C/C++ (используя его с mutex_t а также cond_t так далее.)
  3. (Я думаю, самое важное), как я могу заставить писателя всегда находиться в состоянии ожидания следующего ввода? Если я создам два потока, один для ввода, а другой для вывода, он будет работать или, может быть, лучше для потока, который получает вход, также вызвать функцию принтера.

0 ответов

Другие вопросы по тегам