何时使用boost::lockfree::spsc_queue而不是boost:



在单消费者/单生产者环境中,与boost::lockfree::queue相比,boost::lock free::spsc_queue有哪些优点?

乍一看,由于一个操作只能由一个线程执行,所以原子操作总是会成功,这使得无锁队列的无锁属性实际上是免费等待的。(这是真的吗?(

那么,我们为什么要使用boost::lockfree::spsc_queue呢?

乍一看,由于一个操作只能由一个线程执行,原子操作总是会成功,这使得无锁队列的无锁属性实际上是免费等待的。(这是真的吗?(

这有点像在说"为什么我们有std::vector,如果你已经可以有std::tuple<size_t, size_t, T*>了。

spsc_queue为您提供了一个更高级的接口,例如具有存储管理(静态或动态(和批量推送/弹出。你自己安全地、一般地想出这些并不是一件小事。

也就是说,有时泛型参数的子集允许更简单的实现,这可能会给你更多的控制/洞察力。这是一个你可以自己做的权衡。

相关内容

  • 没有找到相关文章

最新更新