libxr  1.0
Want to be the best embedded framework
Loading...
Searching...
No Matches
mpmc_queue.hpp
1#pragma once
2
3#include <cstddef>
4#include <type_traits>
5
6#include "mpmc_queue_base.hpp"
7#include "queue_typed_base.hpp"
8
9namespace LibXR
10{
25template <typename Payload>
26class MPMCQueue final : public QueueTypedBase<MPMCQueue<Payload>, Payload>,
27 public MPMCQueueBase
28{
30 static_assert(std::is_trivially_copyable_v<Payload>,
31 "MPMCQueue requires trivially copyable payloads");
33 static_assert(std::is_trivially_destructible_v<Payload>,
34 "MPMCQueue requires trivially destructible payloads");
35
36 public:
37 using ValueType = Payload;
42
50 explicit MPMCQueue(size_t capacity)
51 : MPMCQueueBase(sizeof(Payload), capacity)
52 {
53 }
54};
55} // namespace LibXR
有界 MPMC 字节队列内核 / Bounded MPMC byte-queue core
带固定 payload 类型的有界 MPMC 队列。
MPMCQueue(size_t capacity)
构造一个 MPMC 队列。
Payload ValueType
仅接受平凡可拷贝 payload。 Accepts only trivially copyable payloads.
强类型队列的公共薄包装。
LibXR 命名空间
Definition ch32_can.hpp:14