Spec-Zone.ru › GCC 7

8.8 Синхронизация

GNU Objective-C предоставляет поддержку синхронизированных блоков:

@synchronized (ObjCClass *guard) {
  …
}

При входе в @synchronized блок, поток выполнения сначала проверяет, был ли замок на соответствующем guard объекте заблокирован другим потоком. Если да, текущий поток будет ожидать, пока другой поток не освободит замок. Как только guard станет доступным, текущий поток установит свой собственный замок на него, выполнит код, содержащийся в @synchronized блоке, и, наконец, освободит замок (тем самым сделав guard доступным для других потоков).

В отличие от Java, Objective-C не позволяет помечать целые методы как @synchronized. Обратите внимание, что выброс исключений из @synchronized блоков разрешен, и это приведет к правильному разблокированию защищающего объекта.

Из-за взаимодействия между синхронизацией и обработкой исключений, вы можете использовать @synchronized только при компиляции с включенными исключениями, то есть с опцией командной строки -fobjc-exceptions.

© Free Software Foundation
Licensed under the GNU Free Documentation License, Version 1.3.
https://gcc.gnu.org/onlinedocs/gcc-7.5.0/gcc/Synchronization.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API