Как проверить, что объект @synchronized
Иногда я писал следующий код для синхронизации подпрограммы:
@synchronized(objToBeSync){ .... }
Когда два потока пытаются получить доступ к блоку синхронизации одновременно, один будет блокировать другие, пока один не выйдет из блока синхронизации.
Однако иногда я не хочу, чтобы один блокировал другой, но другие проверяют, синхронизируется ли объект, а затем делают что-то другое, поэтому я должен сделать что-то вроде этого:
@synchronized(objToBeSync){
_isBeingSync = YES;
...
_isBeingSync = NO;
}
_isBeingSync
является дополнительной переменной при проверке синхронизации objToBeSync. Другие темы проверяют_isBeingSync
прежде чем они продолжат свою работу. И мой вопрос заключается в том, что objc предоставляет sth для прямой проверки objToBeSync, но не вводит дополнительную переменную для определения его статуса.