Пространства имён
Варианты
Действия

std::atomic_is_lock_free<std::shared_ptr>, std::atomic_load<std::shared_ptr>, std::atomic_store<std::shared_ptr>, std::atomic_...<std::shared_ptr>

Материал из cppreference.com
< cpp‎ | memory‎ | shared ptr

 
 
 
 
 
template< class T >
bool atomic_is_lock_free( const std::shared_ptr<T>* p );
(1) (начиная с C++11)
template< class T >
std::shared_ptr<T> atomic_load( const std::shared_ptr<T>* p );
(2) (начиная с C++11)
template< class T >

std::shared_ptr<T> atomic_load_explicit( const shared_ptr<T>* p,

                                         std::memory_order mo );
(3) (начиная с C++11)
template< class T >

void atomic_store( std::shared_ptr<T>* p,

                   std::shared_ptr<T> r );
(4) (начиная с C++11)
template< class T >

void atomic_store_explicit( std::shared_ptr<T>* p,
                            shared_ptr<T> r,

                            std::memory_order mo);
(5) (начиная с C++11)
template< class T >

std::shared_ptr<T> atomic_exchange( std::shared_ptr<T>* p,

                                    std::shared_ptr<T> r);
(6) (начиная с C++11)
template<class T>

std::shared_ptr<T> atomic_exchange_explicit( std::shared_ptr<T>* p,
                                             std::shared_ptr<T> r,

                                             std::memory_order mo);
(7) (начиная с C++11)
template< class T >

bool atomic_compare_exchange_weak( std::shared_ptr<T>* p,
                                   std::shared_ptr<T>* expected,

                                   std::shared_ptr<T> desired);
(8) (начиная с C++11)
template<class T>

bool atomic_compare_exchange_strong( std::shared_ptr<T>* p,
                                     std::shared_ptr<T>* expected,

                                     std::shared_ptr<T> desired);
(9) (начиная с C++11)
template< class T >

bool atomic_compare_exchange_strong_explicit( std::shared_ptr<T>* p,
                                              std::shared_ptr<T>* expected,
                                              std::shared_ptr<T> desired,
                                              std::memory_order success,

                                              std::memory_order failure);
(10) (начиная с C++11)
template< class T >

bool atomic_compare_exchange_weak_explicit( std::shared_ptr<T>* p,
                                            std::shared_ptr<T>* expected,
                                            std::shared_ptr<T> desired,
                                            std::memory_order success,

                                            std::memory_order failure);
(11) (начиная с C++11)
Если несколько потоков выполнения доступа к объекту, на который ссылается же std::shared_ptr без синхронизации, расы данных может произойти, если все такой доступ осуществляется через эти функции, которые являются частичной специализации соответствующих атомных функций доступа (std::atomic_load, std::atomic_store и т.д.)
Оригинал:
If multiple threads of execution access the object referenced by the same std::shared_ptr without synchronization, a data race may occur, unless all such access is performed through these functions, which are partial specializations of the corresponding atomic access functions (std::atomic_load, std::atomic_store, etc)
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.
{{{1}}}
Оригинал:
{{{2}}}
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.
1)
Определяет, будет ли атомная доступ к общим указателем указал, на которую p является блокировка бесплатно.
Оригинал:
Determines whether atomic access to the shared pointer pointed-to by p is lock-free.
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.
2)
Эквивалент atomic_load_explicit(p, std::memory_order_seq_cst)
Оригинал:
Equivalent to atomic_load_explicit(p, std::memory_order_seq_cst)
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.
3)
Возвращает общий указатель указал, на которую p. Как и в неспециализированных std::atomic_load_explicit, mo не может быть std::memory_order_release или std::memory_order_acq_rel
Оригинал:
Returns the shared pointer pointed-to by p. As with the non-specialized std::atomic_load_explicit, mo cannot be std::memory_order_release or std::memory_order_acq_rel
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.
4)
Эквивалент atomic_store_explicit(p, r, memory_order_seq_cst)
Оригинал:
Equivalent to atomic_store_explicit(p, r, memory_order_seq_cst)
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.
5)
Обмены общих указателей p и r, эффективное выполнение p->swap(r). Как и в неспециализированных std::atomic_store_explicit, mo не может быть std::memory_order_acquire или std::memory_order_acq_rel
Оригинал:
Swaps the shared pointers p and r, effectively executing p->swap(r). As with the non-specialized std::atomic_store_explicit, mo cannot be std::memory_order_acquire or std::memory_order_acq_rel
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.
6)
Эквивалент atomic_exchange_explicit(p, r, memory_order_seq_cst)
Оригинал:
Equivalent to atomic_exchange_explicit(p, r, memory_order_seq_cst)
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.
7)
Обмены общих указателей p и r, эффективное выполнение p->swap(r) и возвращает копию общий указатель ранее указал, на которую p
Оригинал:
Swaps the shared pointers p and r, effectively executing p->swap(r) and returns a copy of the shared pointer formerly pointed-to by p
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.
8)
Эквивалент atomic_compare_exchange_weak_explicit(p, expected, desired, std::memory_order_seq_cst, std::memory_order_seq_cst)
Оригинал:
Equivalent to atomic_compare_exchange_weak_explicit(p, expected, desired, std::memory_order_seq_cst, std::memory_order_seq_cst)
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.
9)
Эквивалент atomic_compare_exchange_strong_explicit(p, expected, desired, std::memory_order_seq_cst, std::memory_order_seq_cst)
Оригинал:
Equivalent to atomic_compare_exchange_strong_explicit(p, expected, desired, std::memory_order_seq_cst, std::memory_order_seq_cst)
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.
10)
Сравнение общих указателей указано, на которую p и expected. Если они эквивалентны (доля собственности одного и того же указателя и относятся к тому же указатель), назначает desired в *p использованием памяти заказе ограничения, заданные по success и возвращается true. Если они не эквивалентны, назначает *p в *expected использованием памяти заказе ограничения, заданные по failure и возвращается false.
Оригинал:
Compares the shared pointers pointed-to by p and expected. If they are equivalent (share ownership of the same pointer and refer to the same pointer), assigns desired into *p using the memory ordering constraints specified by success and returns true. If they are not equivalent, assigns *p into *expected using the memory ordering constraints specified by failure and returns false.
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.
11)
То же, 10), но может не ложно.
Оригинал:
Same as 10), but may fail spuriously.
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.
Все эти функции вызвать непредсказуемое поведение, если p является нулевым указателем.
Оригинал:
All these functions invoke undefined behavior if p is a null pointer.
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.

Содержание

[править] Параметры

p, expected -
Указатель на std::shared_ptr
Оригинал:
a pointer to a std::shared_ptr
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.
r, desired - a std::shared_ptr
mo, success, failure -
памяти заказа селекторы типа std::memory_order
Оригинал:
memory ordering selectors of type std::memory_order
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.

[править] Исключения

Эти функции не бросать исключения.
Оригинал:
These functions do not throw exceptions.
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.

[править] Возвращение

1)
true если атомная доступа реализуется с помощью блокировки без инструкции
Оригинал:
true if atomic access is implemented using lock-free instructions
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.
@ @ 2,3 копии, то к общей указатель.
Оригинал:
@2,3@ A copy of the pointed-to shared pointer.
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.
@ @ 4,5 ничего
Оригинал:
@4,5@ nothing
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.
@ @ 6,7 копию ранее указал, к общему указателю
Оригинал:
@6,7@ A copy of the formerly pointed-to shared pointer
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.
@ @ 8,9,10,11 true, если общий указатели были эквивалентны и обмена была выполнена, false иначе.
Оригинал:
@8,9,10,11@ true if the shared pointers were equivalent and the exchange was performed, false otherwise.
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.

[править] См. также

проверяет деятельность атомного типа являются блокировка бесплатно
Оригинал:
checks if the atomic type's operations are lock-free
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.

(шаблон функции) [edit]
атомарно заменяет значение атомного объекта с неатомической аргумент
Оригинал:
atomically replaces the value of the atomic object with a non-atomic argument
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.

(шаблон функции) [edit]
атомарно получает значение, хранящееся в атомном объекте
Оригинал:
atomically obtains the value stored in an atomic object
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.

(шаблон функции) [edit]
атомарно заменяет значение атомного объекта с неатомической аргумент и возвращает старое значение атомной
Оригинал:
atomically replaces the value of the atomic object with non-atomic argument and returns the old value of the atomic
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.

(шаблон функции) [edit]
атомарно сравнивает значение атомного объекта с неатомической аргументов и выполняет атомного обмена, если равны или атомную нагрузку, если нет
Оригинал:
atomically compares the value of the atomic object with non-atomic argument and performs atomic exchange if equal or atomic load if not
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.

(шаблон функции) [edit]