我有一个接受整数指针作为参数的函数,然后它会改变它。我有几个在不同线程上运行的函数实例——一些与参数具有相同的整数。
如果参数正在被另一个线程上的另一个函数实例更改,我需要暂停该函数的实例,并在另一个实例完成更改变量时恢复。
对于此类问题,看似显而易见的解决方案是 NSLock 或 POSIX 互斥锁,但这会阻止函数的所有实例继续运行,即使整数参数不同。
为了更直观地了解我的意思,请考虑以下内容:
void theFunction (int *argument)
{
NSLock *theLock = [NSLock new];
[theLock lock];
(*argument) ++;
[theLock unlock];
}
上面的代码将阻止函数的所有实例运行,但是我只需要暂停整数参数相同的函数实例。如何专门锁定变量,以暂停任何尝试读取或写入它的实例,直到它被解锁?