В чем причина того, почему is_lock_free
требует экземпляр (это функция-член)? Почему не метафункция типа или статическая функция-член constexpr
?Почему is_lock_free функция-член?
Я ищу фактический пример того, почему это необходимо.
В чем причина того, почему is_lock_free
требует экземпляр (это функция-член)? Почему не метафункция типа или статическая функция-член constexpr
?Почему is_lock_free функция-член?
Я ищу фактический пример того, почему это необходимо.
Стандарт допускает тип иногда не содержит блокировки.
раздел 29,4 безблокировочного свойство
Атомное _..._ LOCK_FREE макросы указывают свойство блокировки свободного от соответствующих атомарных типов, с подписанными и неподписанных варианты сгруппированных вместе. Свойства также применимы к соответствующим (частичным) специализациям атомного шаблона. Значение 0 указывает, что типы никогда не блокируются. Значение 1 указывает , что типы иногда блокируются. Значение 2 указывает, что типы всегда блокируются.
В C++ atomic paper n2427 состоянии причина:
... Предложение обеспечивает время выполнения безблокировочной функцию запроса скорее , чем во время компиляции констант, потому что последующие реализации в платформы могут модернизировать замок операции с незакрепленными операциями, поэтому обычно для систем абстрагировать такие объекты за динамическими библиотеками , и мы хотим оставить эту возможность открытой. Кроме того, мы рекомендуем использовать эту технику без аппаратной поддержки атома . ...
А также (как Jesse Good указал):
Предложения предусматривает безблокировочную функцию запросов по отдельным объектам, а не целые тип, чтобы разрешить неизбежно неровные атомные переменные без нанесения ущерба производительности выровненные атомные переменные
Это называется 'is_instance_free'? Нет. КЭД. –
Кажется, это из-за производительности [цитата отсюда] (http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2427.html): «Предложение предусматривает блокировку функции запросов на отдельные объекты, а не целые типы, чтобы разрешить неизбежно смещенные атомные переменные, не наказывая производительность согласованных атомных переменных. –
@JesseGood, который звучит как ответ. Почему это комментарий? ;) –