libxr
Embedded C++ framework for bare-metal, RTOS and Linux
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{
45template <typename Payload>
46class MPMCQueue final : public QueueTypedBase<MPMCQueue<Payload>, Payload>,
47 public MPMCQueueBase
48{
50 static_assert(std::is_trivially_copyable_v<Payload>,
51 "MPMCQueue requires trivially copyable payloads");
53 static_assert(std::is_trivially_destructible_v<Payload>,
54 "MPMCQueue requires trivially destructible payloads");
55
56 public:
57 using ValueType = Payload;
62
69 explicit MPMCQueue(size_t capacity) : MPMCQueueBase(sizeof(Payload), capacity) {}
70};
71} // namespace LibXR
有界 MPMC 字节队列内核 / Bounded MPMC byte-queue core
带固定 payload 类型的有界 MPMC 队列。 Bounded MPMC queue with a fixed payload type.
MPMCQueue(size_t capacity)
构造一个 MPMC 队列 / Construct one MPMC queue.
Payload ValueType
仅接受平凡可拷贝 payload / Accepts only trivially copyable payloads.
强类型队列的公共薄包装 / Common thin wrapper for typed queues.
LibXR 命名空间 / LibXR namespace.
Definition ch32_can.hpp:14