namespace std {
template <class T>
bool atomic_is_lock_free(const shared_ptr<T>* p);
}
概要
shared_ptr
オブジェクトがロックフリーに振る舞えるかを判定する。
要件
p != nullptr
であること。
戻り値
*p
オブジェクトに対する操作がロックフリーに振る舞えるならtrue
、そうでなければfalse
を返す。
false
を返す場合は、ロックで実装されることを意味する。
例外
投げない
例
#include <iostream>
#include <memory>
int main()
{
std::shared_ptr<int> p(new int(3));
if (std::atomic_is_lock_free(&p)) {
std::cout << "shared_ptr<int> is lock-free" << std::endl;
}
else {
std::cout << "shared_ptr<int> isn't lock-free" << std::endl;
}
}
出力例
shared_ptr<int> isn't lock-free
バージョン
言語
- C++11
処理系
- Clang: 3.3
- GCC: 5.0
- ICC: ??
- Visual C++: 2012, 2013