最終更新日時:
が更新

履歴 編集

function
<memory>

std::atomic_exchange_explicit(C++11)

namespace std {
  template <class T>
  shared_ptr<T> atomic_exchange_explicit(shared_ptr<T>* p, shared_ptr<T> r,
                                         memory_order order);
}

概要

メモリオーダーを指定して、shared_ptrオブジェクトを、アトミックに入れ替える。

要件

p != nullptrであること。

効果

p->swap(r)相当のことを、アトミックに実行する。

戻り値

変更前の*pを返す。

例外

投げない

#include <iostream>
#include <memory>

int main()
{
  std::shared_ptr<int> a(new int(1));
  std::shared_ptr<int> b(new int(2));

  std::shared_ptr<int> prev_state = std::atomic_exchange_explicit(
                                      &a, b, std::memory_order_acquire);

  std::cout << *a << std::endl;
  std::cout << *prev_state << std::endl;
}

出力

2
1

バージョン

言語

  • C++11

処理系

参照