用STL输出二进制缓冲区

时间:2010-08-26 16:42:53

标签: c++ stl binary queue

我正在尝试使用最能被描述为二进制输出队列的东西。简而言之,一个线程将使用二进制数据填充队列,另一个线程将从队列中弹出此数据,并将其发送到客户端套接字。

使用STL最好的方法是什么?我正在寻找像std :: queue这样的东西,但是对于很多项目一次。

由于

2 个答案:

答案 0 :(得分:2)

“二进制数据”是什么意思?只是内存缓冲区?你想一次推送/弹出一个缓冲区吗?然后你应该将一个缓冲区包装到一个类中,或者使用std::vector<char>,并将它们/推送到std::deque

答案 1 :(得分:2)

对于多线程环境中的网络通信系统,我需要这样的东西。

在我的情况下,我只是用一个处理锁定的对象包装std :: queue(std :: queue一般来说不是线程安全的)。队列中的对象只是char *样式数组的非常轻量级的包装器。

这些包装器还提供了以下成员函数,我认为这些函数非常有用。

insertByte(unsigned int location, char value)
insertWord(unsigned int location, int value)
insertLong(unsigned int location, long value)
getByte/Word/Long(unsigned int location)

这些在这种情况下特别有用,因为单词和long值必须是byteswapped,我可以将该问题隔离到最后实际处理它的类。

我们正在使用“大于4字节”的二进制数据块进行一些有些奇怪的事情,我当时认为这会阻止我们使用std :: vector,尽管这些天我只会使用它和和&amp; vector [x]一起玩。