как прервать длительную операцию с целью c

У меня долгая работа с кучей "_isCancelled" флагов

// long running code
if (_isCancelled)
  return;

// more code
if (_isCancelled)
  return;

// more code

if (_isCancelled)
  return;

// etc.

но было бы намного чище и проще добавить «долго работающий код», если бы я мог каким-то образом прервать операцию из «внешнего» потока прослушивания

например

-(void)longRunningAsyncOperation
{
  @try {
   // long running operation
  } @catch
  {
   // if aborted just return
  }
}

-(void)cancelOperation
{
// raise an exception on a "listening" thread
}

Есть мысли по поводу этого подхода? Является ли это возможным?


person Avner Barr    schedule 16.09.2013    source источник
comment
Попробуйте это stackoverflow.com/questions/8113268/   -  person Prasad_R    schedule 16.09.2013
comment
по-прежнему похоже, что они продолжают проверять ноль на каждой итерации   -  person Avner Barr    schedule 16.09.2013