Библиотека задач по C++ | тесты, код, задания
Открыть в Telegram
Задачи и тесты по C++ для тренировки и обучения. Как запустить своего ии-агента: https://clc.to/tvpmDQ По рекламе: @proglib_adv Учиться у нас: https://proglib.io/w/7a480301 Для обратной связи: @proglibrary_feeedback_bot
Больше5 456
Подписчики
-324 часа
-97 дней
-5330 день
Архив постов
Зачем pool объявлен static, если это transient-аллокация?
Что произойдёт при выполнении этого кода?
‼️ Задача на выходные: lock_guard
Проведи ревью кода и найди проблему (если она есть😉).
#include <mutex>
#include <thread>
#include <vector>
#include <iostream>
std::mutex mtx;
std::vector<int> data;
void producer() {
for (int i = 0; i < 100; ++i) {
std::lock_guard<std::mutex> lock(mtx);
data.push_back(i);
}
}
void consumer() {
while (true) {
std::lock_guard<std::mutex> lock(mtx);
if (data.empty()) {
// Ждём данные...
std::this_thread::sleep_for(
std::chrono::milliseconds(10));
continue;
}
std::cout << data.back() << "\n";
data.pop_back();
}
}
Вопрос: что не так с consumer()? Почему lock_guard здесь — плохой выбор и как это исправить?
📍Навигация: Вакансии • Задачи • Собесы
Библиотека C/C++ разработчика
#междусобойчик‼️ Задача на выходные: lock_guard
Проведи ревью кода и найди проблему (ели она конечно есть😉).
#include <mutex>
#include <thread>
#include <vector>
#include <iostream>
std::mutex mtx;
std::vector<int> data;
void producer() {
for (int i = 0; i < 100; ++i) {
std::lock_guard<std::mutex> lock(mtx);
data.push_back(i);
}
}
void consumer() {
while (true) {
std::lock_guard<std::mutex> lock(mtx);
if (data.empty()) {
// Ждём данные...
std::this_thread::sleep_for(
std::chrono::milliseconds(10));
continue;
}
std::cout << data.back() << "\n";
data.pop_back();
}
}
Вопрос: что не так с consumer()? Почему lock_guard здесь — плохой выбор и как это исправить?
📍Навигация: Вакансии • Задачи • Собесы
Библиотека C/C++ разработчика
#междусобойчикГарантированно ли aligned == true?
