std::atomic_compare_exchange_weak, std::atomic_compare_exchange_strong, std::atomic_compare_exchange_weak_explicit, std::atomic_compare_exchange_strong_explicit
|
|
Эта страница была переведена автоматически с английской версии вики используя Переводчик Google.
Перевод может содержать ошибки и странные формулировки. Наведите курсор на текст, чтобы увидеть оригинал. Вы можете помочь в исправлении ошибок и улучшении перевода. Для инструкций перейдите по ссылке. Щёлкните здесь, чтобы увидеть английскую версию этой страницы |
| Определён в заголовочном файле <atomic>
|
||
| template< class T > bool atomic_compare_exchange_weak( std::atomic<T>* obj, |
(1) | (начиная с C++11) |
| template< class T > bool atomic_compare_exchange_strong( std::atomic<T>* obj, |
(2) | (начиная с C++11) |
| template< class T > bool atomic_compare_exchange_weak_explicit( std::atomic<T>* obj, |
(3) | (начиная с C++11) |
| template< class T > bool atomic_compare_exchange_strong_explicit( std::atomic<T>* obj, |
(4) | (начиная с C++11) |
obj со значением, на которое указывает expected, и если эти равны, заменяет бывший с desired (выполняет чтение-модификация-запись). В противном случае, загружает текущее значение указывает obj в *expected (выполняет операцию загрузки).obj with the value pointed to by expected, and if those are equal, replaces the former with desired (performs read-modify-write operation). Otherwise, loads the actual value pointed to by obj into *expected (performs load operation).Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
succ и fail соответственно. (1-2) версии используют std::memory_order_seq_cst по умолчанию.succ and fail respectively. The (1-2) versions use std::memory_order_seq_cst by default.Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
Содержание |
[править] Параметры
| obj | — | Указатель на атомном объекте проверить и изменить
Оригинал: pointer to the atomic object to test and modify Текст был переведён автоматически используя Переводчик Google. Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда. |
| expected | — | указатель на значение как ожидается, будет найден в атомном объекте
Оригинал: pointer to the value expected to be found in the atomic object Текст был переведён автоматически используя Переводчик Google. Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда. |
| desired | — | значение для хранения в атомном объекте, если он, как ожидается
Оригинал: the value to store in the atomic object if it is as expected Текст был переведён автоматически используя Переводчик Google. Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда. |
| succ | — | памяти sycnhronization заказа на чтение-модификация-запись, если сравнение успешно. Все допустимые значения .
Оригинал: the memory sycnhronization ordering for the read-modify-write operation if the comparison succeeds. All values are permitted. Текст был переведён автоматически используя Переводчик Google. Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда. |
| fail | — | памяти sycnhronization заказа для операции загрузки, если сравнение не удается. Не может быть std::memory_order_release или std::memory_order_ack_rel и не может указать порядок сильнее, чем
succОригинал: the memory sycnhronization ordering for the load operation if the comparison fails. Cannot be std::memory_order_release or std::memory_order_ack_rel and cannot specify stronger ordering than succТекст был переведён автоматически используя Переводчик Google. Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда. |
[править] Возвращаемое значение
*obj составила *exp, false иначе.*obj was equal to *exp, false otherwise.Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
[править] Исключения
[править] Пример
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
void append(list* s, node* n) { node* head; do { head = s->head; n->next = head; } while(! std::atomic_compare_exchange_weak(s->head, head, n)); }
[править] См. также
| атомарно сравнивает значение атомарного объекта с не атомарным аргументом и выполняет атомарный обмен, если равны или атомарную загрузку, если нет Оригинал: atomically compares the value of the atomic object with non-atomic argument and performs atomic exchange if equal or atomic load if not Текст был переведён автоматически используя Переводчик Google. Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда. (public функция-член std::atomic)
| |
| (C++11) (C++11) |
атомарно заменяет значение атомного объекта с неатомической аргумент и возвращает старое значение атомной Оригинал: atomically replaces the value of the atomic object with non-atomic argument and returns the old value of the atomic Текст был переведён автоматически используя Переводчик Google. Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда. (шаблон функции) |
| Специализируется атомарных операций на ЗППП :: shared_ptr Оригинал: specializes atomic operations for std::shared_ptr Текст был переведён автоматически используя Переводчик Google. Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда. (шаблон функции) | |
| Справка по C — atomic_compare_exchange, atomic_compare_exchange_explicit
| |

