代码之家  ›  专栏  ›  技术社区  ›  monoceres

用STL输出二进制缓冲区

  •  1
  • monoceres  · 技术社区  · 14 年前

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

    用STL做这件事最好的方法是什么?我在找像std::queue这样的东西,但是一次要找很多项。

    2 回复  |  直到 14 年前
        1
  •  2
  •   Dima    14 年前

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

        2
  •  2
  •   jkerian    14 年前

    我需要在多线程环境中的网络通信系统中使用这种东西。

    在我的例子中,我只是用一个处理锁定的对象包装了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值必须是字节交换的,我可以将问题隔离到最后实际处理它的类。