Синхронизированная очередь C++17
Доповніть доданий шаблон так, щоб клас SBuffer був реалізацією синхронізованої черги. Черга повинна додатково керувати пулом об’єктів типу ItemType. Конструктор об’єкта класу SBuffer має створити N об’єктів типу ItemType. Вказівники лише на ці об’єкти можуть повертатися реалізованими методами. Також можна вважати, що всі вказівники, передані в аргументах, раніше були повернуті іншими методами цього ж об’єкта.
Специфікація методів:
int enqueue(ItemType* item)— додає в кінець черги об’єкт, на який вказуєitem, і повертає1. Якщо раніше було викликаноstop(), нічого не робить і повертає0.ItemType* dequeue()— видаляє об’єкт з початку черги й повертає вказівник на нього. Якщо черга порожня, призупиняє виконання потоку до того, як з’явиться доступний об’єкт, або буде викликано методstopдля об’єкта черги.ItemType* allocItem()— повертає будь-який об’єкт типуItemTypeз пулу наразі невикористовуваних об’єктів. Якщо всі об’єкти зараз зайняті, призупиняє виконання потоку до звільнення якогось об’єкта або до виклику методуstop.void freeItem(ItemType* item)— позначає звільнення ресурсу потоком. Переданий об’єкт*itemмає повернутися до пулу невикористовуваних об’єктів.void stop()— з моменту викликуstopна об’єкті черги методallocItemзавжди повертаєnullptr, а методdequeueповертає об’єкти, доки черга не спорожніє; після цього він також завжди повертаєnullptr.
Черга має працювати згідно зі специфікацією під час використання її багатьма потоками. Рішення, що ґрунтуються на активному очікуванні, не допускаються.
Умови:
1. **Заборона LLM-генерації:** код обов’язково перевірятиметься на списування із загальнодоступних моделей ШІ — категорично заборонено звертатися до публічних LLM для написання коду.
2. **Оцінювання:** ваш файл буде завантажений у автоматизовану систему тестування. Для успішного прийняття рішення він має пройти всі тести без помилок.
Шаблон розв’язку
Слід подати лише заголовковий файл sbuffer.h. Для синхронізації потоків, будь ласка, використовуйте можливості стандартної бібліотеки C++17.
Приложения 1
Отзыв заказчика о сотрудничестве с Roman Biniukov
Синхронизированная очередь C++17Работа сделана быстро и качественно.
Отзыв фрилансера о сотрудничестве с Vadym Hassieiev
Синхронизированная очередь C++17Все чудесно, спасибо за проект
-
762 12 0 Добрый день. Задача не выглядит сложной. Просмотрел файл sbuffer.h. Реализую по требованиям. Обращайтесь
Актуальные фриланс-проекты в категории C и C++
Сравнительный анализ эффективности кастомного ПО (v2.2-field) и эталонного ПО (Meshtastic v2.x)
1000 UAH
Сравнительный анализ эффективности кастомного ПО (v2.2-field) и эталонного ПО (Meshtastic v2.x) на идентичной аппаратной платформе (ESP32 + SX1268, 2W) по критериям дальности, пропускной способности, стабильности линка и энергопотребления. Провести тесты с замерами с учетом… C и C++, C# ∙ 2 дня 14 часов назад ∙ 2 ставки |
Консультация и аудит текущего проекта на Odoo 19 Community EditionИщем Odoo разработчика — соло-разработчика с опытом разработки на Odoo 19 Community Edition, в том числе с использованием Claude Code. Нам нужен специалист, который успешно реализовал проекты в Odoo и имеет практический опыт разработки с использованием Claude Code. Важно:… C и C++, Javascript и Typescript ∙ 5 дней 15 часов назад ∙ 7 ставок |
Разработка ПО для Arduino (RF-модули 3–7.5 ГГц, автоматическое сканирование частот)Необходимо разработать систему на Arduino для автоматического поиска активного аналогового видеосигнала и автоматической настройки передатчика на обнаруженную частоту.Планируется использование трех отдельных приемно-передающих модулей: 3000–4200 МГц; 4900–6000 МГц; 6100–7500… C и C++, Встраиваемые системы и микроконтроллеры ∙ 6 дней 16 часов назад ∙ 4 ставки |
Чёрная Украина (RP-проект на базе MTA)
51 835 UAH
|
Инженер по инфраструктуре резидентных проксиМы строим сеть резидентных прокси с нуля — полностью собственную, без сторонних поставщиков. Нам нужен один исключительный сетевой инженер для создания всей технической базы. Что вы будете строить: - Android SDK для фонового использования, который направляет прокси-трафик через… C и C++, DevOps ∙ 12 дней 12 часов назад ∙ 15 ставок |