Проведи ревью кода и найди проблему (если она есть😉).
#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++ разработчика
#междусобойчик
Please open Telegram to view this post
VIEW IN TELEGRAM
Какой из перечисленных инструментов является статическим анализатором кода для C++?
Anonymous Quiz
20%
Valgrind
5%
GDB
62%
PVS-Studio
4%
Perf
8%
strace
Чем статический анализ принципиально отличается от динамического?
Anonymous Quiz
4%
Статический анализ работает только с шаблонами, динамический — с обычными функциями
6%
Статический анализ находит только синтаксические ошибки
1%
Динамический анализ не может обнаружить утечки памяти
88%
Статический анализ выполняется без запуска программы, динамический — во время выполнения
1%
Статический анализ требует специального оборудования