我正在尝试使用最能被描述为二进制输出队列的东西。简而言之,一个线程将使用二进制数据填充队列,另一个线程将从队列中弹出此数据,并将其发送到客户端套接字。
使用STL最好的方法是什么?我正在寻找像std :: queue这样的东西,但是对于很多项目一次。
由于
答案 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]一起玩。