Jak sprawdzić, czy obiekt jest synchronizowany @
Czasami napisałem następujący kod, aby zsynchronizować procedurę:
@synchronized(objToBeSync){ .... }
Gdy dwa wątki spróbują uzyskać dostęp do bloku synchronizacji w tym samym czasie, jeden z nich zablokuje pozostałe, aż do momentu, gdy ten wyjdzie z bloku synchronizacji.
Jednak czasami nie chcę, aby jeden blokował drugi, ale inni sprawdzają, czy obiekt jest synchronizowany, a następnie robię coś innego, więc muszę zrobić coś takiego:
@synchronized(objToBeSync){
_isBeingSync = YES;
...
_isBeingSync = NO;
}
_isBeingSync
to dodatkowy var podczas sprawdzania, czy objToBeSync jest synchronizowany. Pozostałe wątki sprawdzają_isBeingSync
przed kontynuowaniem pracy. I moje pytanie brzmi, że objc dostarcza czegoś do sprawdzenia objToBeSync bezpośrednio, ale nie wprowadza dodatkowego var, aby zaznaczyć jego status.