Поддержка iOS futex
Есть ли способ реализовать быструю спин-блокировку на iOS, которая превращается в блокировку на примитиве ОС, если и только если есть конфликт? Я ищу что-то эквивалентное этим реализациям:
http://locklessinc.com/articles/keyed_events/ (Fast Mutex) http://locklessinc.com/articles/mutex_cv_futex/
Намерение состоит в том, чтобы использовать это в местах, где мы определили, что спин-блокировка идеальна, но где мы хотим учесть редкую возможность того, что другой поток с более низким приоритетом удерживает блокировку, и в этом случае мы хотим заблокировать ядро. примитивен и будит только тогда, когда другой поток снимает блокировку.
1 ответ
Наконец, есть ответ на этот вопрос: os_unfair_lock делает то, что вы просите. Это эквивалентно спин-блокировке, когда она не выполняется, но не занята ожиданием и дает приоритет, когда состязается, как мьютекс.