Назад к задачамПолучайте помощь с лайвкодингом в реальном времени с Sobes Copilot
Junior — Senior
7
Ревью и улучшение функции обработки сообщений из общей очереди
Условие задачи
Необходимо провести ревью функции handle_message, которая читает сообщения из глобальной очереди и передаёт их в длительный расчёт.
- Выявить логические ошибки и потенциальные состояния гонки.
- Предложить и реализовать рефакторинг кода.
- Особое внимание уделить корректному использованию мьютекса: правильному захвату, отпусканию и исключению двойного разблокирования.
std::queue<std::string> g_messages;
void long_calculation_with_message(const std::string& message);
void handle_message() {
std::mutex mutex;
mutex.lock();
if (!g_messages.empty()) {
const std::string& message = g_messages.front();
mutex.unlock();
long_calculation_with_message(message);
mutex.lock();
g_messages.pop();
mutex.unlock();
}
mutex.unlock();
}