如何spsc_queue.pop() 这个结构

how to spsc_queue.pop() this struct?

本文关键字:结构 pop spsc queue 如何      更新时间:2023-10-16

我正在尝试spsc_queue.pop()这个struct

enum action_type {
    SUBSCRIBE,
    UNSUBSCRIBE,
    MESSAGE
};
struct action {
    action() = default ;
    action(action_type t, connection_hdl h) : type(t), hdl(h) {}
    action(action_type t, server::message_ptr m) : type(t), msg(m) {}
    action_type type;
    websocketpp::connection_hdl hdl;
    server::message_ptr msg;
};

action a;
while(m_actions.pop(a)){
    ...

但是每当我测试

std::cout << "'" << a.type << "'" << std::endl;

'0'被写入终端,但它应该只是 action_type 的值之一。 我读过struct的默认值是 0 ,但为什么spsc_queue.pop()不能设置a

boost::lockfree::spsc_queue

SUBSCRIBE 的值 0 。如果要给SUBSCRIBE一个不同的值,可以初始化枚举器,例如,使用 1

enum action_type {
    SUBSCRIBE = 1,
    UNSUBSCRIBE,
    MESSAGE
};

其他枚举器将获取相应的下一个整数值。