Есть ли в Objective-C / Swift какая-либо собственная блокировка уровня C, кроме os_unfair_lock? - PullRequest
2 голосов
/ 03 февраля 2020

Мне стало любопытно, и я начал искать все доступные инструменты синхронизации C -уровня на платформе iOS / macOS. Однако, основываясь на официальных документах (https://developer.apple.com/documentation/os/synchronization?language=objc), os_unfair_lock кажется единственными доступными инструментами синхронизации.

Я что-то упустил? Где все инструменты семафоров / мониторов C -уровня?

1 Ответ

2 голосов
/ 04 февраля 2020

Все старые C замки есть, но они пытаются направить всех к os_unfair_lock, в настоящее время. См. Параллельное программирование с GCD , где они обсуждают C механизмы блокировки (и как бы вы использовали их в Swift, если хотите), и это обсуждение затрагивает их мыслительный процесс в отношении блокировок в настоящее время.

Но вы можете использовать pthread_mutex_t, как и раньше. Или, если вы имеете дело с атомом c, вы можете использовать OSAtomicXXX. Старый спин-блокировка устарела, вместо этого рекомендуется os_unfair_lock. Все эти опции скрыты на man страницах .

Излишне говорить, что из Objective- C у вас все еще есть NSLock, NSRecursiveLock и директива @synchronized тоже.

Старая Руководство по программированию потоков: Использование блокировок перечисляет несколько альтернатив блокировки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...