2011-02-17 27 views
3

我模拟来自以给定数据包/秒间隔产生数据包的源数据包。我想创建一个像ostream对象那样运行的流类,允许使用operator<<来通过它输出内容,但是要注意插入的每个值都应该从缓冲区释放到文件描述符,按照指定顺序间隔。标准方法来实现一个缓冲流以固定的时间间隔刷新?

所以,举例来说,我可能会与文件描述符sockfd的插座,并说:

MyBuffer buffer(sockfd, 1000); //Interval of 1000 milliseconds 
buffer << 1 << 2 << 3; 

和输出将被定时,使得它会输出

1 
<1 second gap> 
2 
<1 second gap> 
3 

套接字。我现在正在寻找Boost.Iostreams,这会是一个很好的解决方案吗?是否有一些神奇的词组,我可以谷歌描述这个问题,我不知道?

任何帮助,将不胜感激。

感谢 布拉德这样做这是完全正交建立一个自定义流类将是保持这是由一个线程每一秒轮询串的队列

+0

您想一次释放*个字符吗?还是*一次一个地插入流中的对象? – templatetypedef 2011-02-17 21:32:14

回答

2

一个选项。每次轮询队列时,线程都会读出第一个元素并通过网络发送。

这不使用流库,但我认为这可能是你想要的。在内部,大多数流只是将所有输入集中到一个文本块中,失去了关于文本的哪些部分与插入的每个对象相对应的信息。

编辑:我应该第一次提到这个,但请务必在这个队列上使用适当的同步!您可能会想要使用互斥锁来保护对它的访问,或者如果不起作用,可以使用巧妙的无锁队列。只要确保不要盲目地从多个线程读取和写入它。

2

1000ms应该是异步的吗?如果没有,您可以在您的信息流的运营商< <中放入睡眠(1000)。取决于你想要做什么,它可能适合你。

相关问题