C++ Boost:spsc队列:我可以将其用于用户定义的类型吗?

C++ Boost:spsc队列:我可以将其用于用户定义的类型吗?,c++,multithreading,boost,lock-free,C++,Multithreading,Boost,Lock Free,我想知道Boost.LockFree中的spsc\u队列是否可以用于用户定义的类型。从这些示例中,我不确定,我只看到了atomics和更多atomics 例如: boost::lockfree::spsc_queue<int, boost::lockfree::capacity<1024> > spsc_queue; boost::无锁::spsc_队列spsc_队列; 那么,我可以这样做吗 boost::lockfree::spsc_queue<ServerR

我想知道
Boost.LockFree
中的
spsc\u队列是否可以用于用户定义的类型。从这些示例中,我不确定,我只看到了
atomic
s和更多
atomic
s

例如:

boost::lockfree::spsc_queue<int, boost::lockfree::capacity<1024> > spsc_queue;
boost::无锁::spsc_队列spsc_队列;
那么,我可以这样做吗

boost::lockfree::spsc_queue<ServerReply, boost::lockfree::capacity<1024> > spsc_queue;
boost::无锁::spsc_队列spsc_队列;
我想知道是否只能存储基本类型和指针,因为弹出操作等必须以原子方式进行,但ServerReply是一种复合类型。

简短的回答是肯定的

虽然这是一个稍微不同的问题,但我已经在前面的一个答案中解释了这是如何和为什么的,这个答案深入到了“证据”:库代码:

您可以非常自信,如果它编译了,它可能是被允许的

值得注意的例外是,并没有运行时验证确实只有一个生产者和一个消费者这一事实,但毫无疑问,您得到了那个要求