Skip to content

Akumarus/FIFO_queue

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Проект FIFO очереди

Потокобезопасная очередь FIFO с фиксированными ограничениями на размер пакетов и общую емкость.

Описание

  • Потокобезопасные операции Push/Pop
  • Ограничения:
    • Максимальный размер пакета
    • Максимальное количество пакетов
    • Максимальный общий размер данных
  • Статистика работы очереди:
    • Текущее количество пакетов (Size())
    • Общий объем данных (TotalBytes())

Быстрый старт

  • C++17 или новее
  • CMake 3.22+

Сборка

mkdir build && cd build
cmake ..
make

Запуск демо

./QueueProject

API

template <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          # Этот файл

About

Test task for implementation of fifo queue

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published