Потокобезопасная очередь FIFO с фиксированными ограничениями на размер пакетов и общую емкость.
- Потокобезопасные операции
Push/Pop - Ограничения:
- Максимальный размер пакета
- Максимальное количество пакетов
- Максимальный общий размер данных
- Статистика работы очереди:
- Текущее количество пакетов (
Size()) - Общий объем данных (
TotalBytes())
- Текущее количество пакетов (
- C++17 или новее
- CMake 3.22+
mkdir build && cd build
cmake ..
make./QueueProjecttemplate <unsigned int maxPacketSize, unsigned int maxPacketCount, unsigned int maxQueueSize>
class FifoQueue {
public:
bool Push(unsigned char* data, unsigned int size, unsigned int id);
bool Pop(unsigned char* buffer, unsigned int bufferSize, unsigned int& size, unsigned int& id);
unsigned int Size();
unsigned int TotalBytes();
};FifoQueue<1024, 10, 4096> queue;
unsigned char data[] = {1, 2, 3};
queue.Push(data, sizeof(data), 1);
unsigned char buffer[1024];
unsigned int size, id;
queue.Pop(buffer, sizeof(buffer), size, id);.
├── src/ # Исходные коды
│ ├── main.cpp # Демонстрационная программа
├── inc/ # Заголовочные файлы
│ ├── queue.hpp # Реализация очереди
├── CMakeLists.txt # Конфигурация сборки
└── README.md # Этот файл