Вступить в клуб →
лёгкаявопросСовременный C++: move-семантика, шаблоны, лямбды

Отложенный повтор запроса отправляет мусор вместо тела

void Client::scheduleRetry(Request req) {
    int attempts = 3;
    timer_.after(std::chrono::seconds(1), [&] {
        send(req, attempts);
    });
}

Колбэк вызывается через секунду из цикла событий. Иногда отправляется пустой запрос, иногда процесс падает. В чём ошибка?

  • Лямбда хранит ссылки на уже уничтоженные локальные
  • Лямбду нельзя передавать в другой поток
  • Захват [&] копирует объекты при вызове лямбды
  • Request нужно передать в функцию по ссылке

🔒 Проверка ответа — для участников клуба

  • Проверка ответа
  • Подсказка, если застряли
  • Разбор с объяснением, почему так
  • Прогресс по всем задачам и виртуальные собеседования
Зарегистрироваться →

Регистрация занимает минуту

Другие задачи раздела