单个写入器,C ++中的多个读取器字符流(相当于lisp make-broadcast-stream)

时间:2015-02-26 04:28:23

标签: c++ boost std

我正在尝试实现具有以下属性的进程范围“事件流”:

  • 简单的字符流
  • 一位作家可以发帖
  • 很多读者会从中读取(闲暇时)
  • 读者可以“订阅”和“取消订阅”流(暗示他们只能看到这两个事件之间的数据)

我正在使用Boost :: asio,因此线程实际上不是问题,所有这些都可以/将在同一个线程上发生。

主要的一点是,当一个字符串被写入流时,我希望所有读者都能读取整个流(而不仅仅是他们碰巧抓到的那些)。

图表可能如此:

W1 writes    "ABCD"
   R1 reads  "ABCD"
W1 writes    "EFGH"
   R2 reads  "ABCDEFGH"
W1 write     "."
   R1 reads  "EFGH."
   R2 reads  "."

Common Lisp在#'make-broadcast-stream中有这个确切的习惯用法。我试图不重新发明轮子并一直在研究boost :: iostreams,但我不确定这正是我需要的。

关于:

的任何想法
  1. 我想要实现的成语名称是
  2. 任何std ::或boost ::它的实现

0 个答案:

没有答案