在使用protobuf时,如果数据量较大,则需要转线程来处理,如何存储序列化后的数据呢?
方法一:
使用vector<char>,再将其存入queu中。
static std::queue<std::vector<char>> m_queTaskList;
char m_protoBuffer[MAX_PROTO_BUF_SIZE];
int serialize_size = protodata.ByteSizeLong();
protodata.SerializeToArray(m_protoBuffer, serialize_size);
std::vector<char> vec_protodata(m_protoBuffer, m_protBuffer + serialize_size);
m_queTaskList.pushback(vec_protodata);
方法二:
使用std::string,再将其存入queu中。
static std::queue<std::string> m_queTaskList;
char m_protoBuffer[MAX_PROTO_BUF_SIZE];
int serialize_size = protodata.ByteSizeLong();
protodata.SerializeToArray(m_protoBuffer, serialize_size);
std::string strSerializeData;
strSerializeData.assign(m_protoBuffer, serialize_size);
m_queTaskList.pushback(strSerializeData);