Можно ли полностью избежать опроса, когда цикл for должен заканчиваться на сигнале - PullRequest
0 голосов
/ 13 апреля 2019

У меня есть следующий код, который выполняется в потоке, который я создаю всякий раз, когда я получаю входной пакет, который обрабатывает пакет строк данных.Я хочу, чтобы пакетная обработка приостанавливалась, а состояние (т. Е. Обрабатываемая строка) сохранялось, если пользователь нажимает кнопку Пауза.

bool pause = false; 
int rowBeingProcessed = -1;

void Process(List<Row> batch)
{
   for(int i=0; i<batch.size(); i++)
   {
      if(pause)
      {
         rowBeingProcessed = i; // save state
         break; // stop execution
      }
   }
}

void PauseSignalHandler()
{
   pause = true;
}

Теперь, даже если я использовал метод событий / сигналов для выполненияПауза, я все еще опрашиваю переменную pause внутри цикла for.

Я знаю, что могу переместить часть save state в PauseSignalHandler(), но это не устраняет проблему, потому что мне все еще нужно опросить на pause на break цикле for.

Есть ли способ, с помощью которого можно полностью избежать опроса в этом сценарии?

...