Implemented N3194

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@120458 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Howard Hinnant
2010-11-30 20:23:32 +00:00
parent ac417faebc
commit 7de47902d0
20 changed files with 62 additions and 1021 deletions

View File

@@ -256,39 +256,4 @@ shared_future<void>::operator=(const shared_future& __rhs)
return *this;
}
atomic_future<void>::~atomic_future()
{
if (__state_)
__state_->__release_shared();
}
atomic_future<void>&
atomic_future<void>::operator=(const atomic_future& __rhs)
{
if (this != &__rhs)
{
unique_lock<mutex> __this(__mut_, defer_lock);
unique_lock<mutex> __that(__rhs.__mut_, defer_lock);
_STD::lock(__this, __that);
if (__rhs.__state_)
__rhs.__state_->__add_shared();
if (__state_)
__state_->__release_shared();
__state_ = __rhs.__state_;
}
return *this;
}
void
atomic_future<void>::swap(atomic_future& __rhs)
{
if (this != &__rhs)
{
unique_lock<mutex> __this(__mut_, defer_lock);
unique_lock<mutex> __that(__rhs.__mut_, defer_lock);
_STD::lock(__this, __that);
_STD::swap(__state_, __rhs.__state_);
}
}
_LIBCPP_END_NAMESPACE_STD