BlinCT
22 февраля 2019 г. 19:50

Ожидание нужного флага для выполнения последующих действий

С++

Всем привет.
надеюсь кто даст дельный совет)
Есть такой кусочек кода

  1. for (const auto &session : arr)
  2. {
  3. session->Start();
  4. session->Stop();
  5. }

В методе есть запуск и остановка, после остановки есть состояния типа stopping и stopped. Так вот, это не сразу происходит.
Получается после stop нельзя выходить из первого for пока не сменится состояние.
Как это правильно сделать?)

Спасибо)

2

Вам это нравится? Поделитесь в социальных сетях!

3
Evgenii Legotckoi
  • 22 февраля 2019 г. 20:02
  • (ред.)
  • Ответ был помечен как решение.

Привет!

Первое, что приходит на ум, это ещё один цикл, который будет проверять состояние, пока оно не изменится

  1. for (const auto &session : arr)
  2. {
  3. session->Start();
  4. session->Stop();
  5.  
  6. while(session->state() != stopped) {}
  7. }
    Evgenii Legotckoi
    • 22 февраля 2019 г. 20:21

    Ещё есть вариант погружать поток в sleep на некоторое время, перепроверять и снова погружать, пока не выполнится условия, но я понятия не имею, что у тебя там в плане многопоточности и как это действует в рамках того проекта.

      BlinCT
      • 22 февраля 2019 г. 22:01

      Ответ найден, тема закрыта)

        Комментарии

        Только авторизованные пользователи могут публиковать комментарии.
        Пожалуйста, авторизуйтесь или зарегистрируйтесь