2015-04-02 2 views
2

Есть ли способ реализовать быструю спин-блокировку на iOS, которая возвращается к блокировке на примитиве ОС тогда и только тогда, когда есть конкуренция? Я ищу что-то эквивалентное эти реализации:Поддержка iOS futex

http://locklessinc.com/articles/keyed_events/ (Fast мьютекс) http://locklessinc.com/articles/mutex_cv_futex/

Цель состоит в том, чтобы использовать это в тех местах, где мы определили, что спинлки являются идеальной, но, когда мы хотим, чтобы учесть для редкой возможности, что другой, потенциально более низкий приоритет, поток удерживает блокировку, в этом случае мы хотим заблокировать примитив ядра и разбудить только тогда, когда другой поток освободит блокировку.

ответ

0

Наконец-то ответ на этот вопрос: os_unfair_lock делает то, о чем вы просите. Это эквивалентно спин-блокировке, когда он не работает, но не занят и не жертвует приоритет, когда это противоречит мьютексу.