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
9
namespace
LibXR
10
{
25
template
<
typename
Payload>
26
class
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;
39
using
QueueTypedBase
<
MPMCQueue<Payload>
, Payload>
::Pop
;
41
using
QueueTypedBase
<
MPMCQueue<Payload>
, Payload>
::Push
;
42
50
explicit
MPMCQueue
(
size_t
capacity)
51
:
MPMCQueueBase
(sizeof(Payload), capacity)
52
{
53
}
54
};
55
}
// namespace LibXR
LibXR::MPMCQueueBase
有界 MPMC 字节队列内核 / Bounded MPMC byte-queue core
Definition
mpmc_queue_base.hpp:29
LibXR::MPMCQueue
带固定 payload 类型的有界 MPMC 队列。
Definition
mpmc_queue.hpp:28
LibXR::MPMCQueue::MPMCQueue
MPMCQueue(size_t capacity)
构造一个 MPMC 队列。
Definition
mpmc_queue.hpp:50
LibXR::MPMCQueue::ValueType
Payload ValueType
仅接受平凡可拷贝 payload。 Accepts only trivially copyable payloads.
Definition
mpmc_queue.hpp:37
LibXR::QueueTypedBase
强类型队列的公共薄包装。
Definition
queue_typed_base.hpp:24
LibXR::QueueTypedBase< MPMCQueue< Payload >, Payload >::Pop
ErrorCode Pop()
Definition
queue_typed_base.hpp:55
LibXR::QueueTypedBase< MPMCQueue< Payload >, Payload >::Push
ErrorCode Push(const Payload &item)
Definition
queue_typed_base.hpp:34
LibXR
LibXR 命名空间
Definition
ch32_can.hpp:14
src
structure
queue
mpmc_queue.hpp
Generated by
1.12.0