Вопрос по c++11, c++ – Почему is_lock_free является функцией-членом?

14

Какова причина, почемуis_lock_free требуется экземпляр (это функция-член)? Почему бы не метафункция типа или статическийconstexpr функция-член?

Я ищу фактический пример того, почему это необходимо.

@JesseGood это звучит как ответ. Почему это комментарий? ;) R. Martinho Fernandes
C++17 добавляетstatic constexpr bool std::atomic<T>is_always_lock_free, предоставляя постоянный запрос времени компиляции о типе. Peter Cordes
Кажется, это из-за производительностиquote from here: The proposal provides lock-free query functions on individual objects rather than whole types to permit unavoidably misaligned atomic variables without penalizing the performance of aligned atomic variables Jesse Good
Это называетсяis_instance_free? № КЭД. Thomas Eding

Ваш Ответ

1   ответ
23

sometimes безблокировочный.

section 29.4 Lock-free property

The ATOMIC_..._LOCK_FREE macros indicate the lock-free property of the corresponding atomic types, with the signed and unsigned variants grouped together. The properties also apply to the corresponding (partial) specializations of the atomic template. A value of 0 indicates that the types are never lock-free. A value of 1 indicates that the types are sometimes lock-free. A value of 2 indicates that the types are always lock-free.

C ++ атомная бумага n2427 утверждает причину:

... The proposal provides run-time lock-free query functions rather than compile-time constants because subsequent implementations of a platform may upgrade locking operations with lock-free operations, so it is common for systems to abstract such facilities behind dynamic libraries, and we wish to leave that possiblility open. Furthermore, we recommend that implementations without hardware atomic support use that technique. ...

А также (какДжесси Гуд указал):

The proposal provides lock-free query functions on individual objects rather than whole types to permit unavoidably misaligned atomic variables without penalizing the performance of aligned atomic variables

Error: User Rate Limit Exceeded Pubby
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded

Похожие вопросы