У меня есть таймер, который раз в минуту выполняет метод.
У метода есть некоторый код и вызов NSThread.
NSthread вызывает другой метод с критическим разделом.
Иногда выполнение критической секции занимает больше минуты. И мне нужно, чтобы другой поток достиг @synchronized, чтобы не ждать, а выйти из функции без выполнения кода.
В настоящее время я делаю это так, что кажется, что он работает неправильно, и два потока, кажется, входят в критическую секцию.
Код:
BOOL isRunning;
- (void)mainFunction
{
isRunning = NO;
[NSTimer scheduledTimerWithTimeInterval:60.0 target:self selector:@selector(glichyFunc) userInfo:nil repeates:YES];
}
- (void)glichyFunc
{
a++;
b--;
[NSThread detachNewThreadSelector:@selector(doJob) toTarget:self withObject:nil];
}
- (void)doJob
{
if (isRunning)
return;
isRunning = YES;
@syncronized{
c = [globalObject calculate];
isRunning = NO;
}
}