Convert __thread_local_data to the singleton pattern

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@116500 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Howard Hinnant
2010-10-14 19:18:04 +00:00
parent 8177207f3c
commit 5306d68019
5 changed files with 13 additions and 8 deletions

View File

@@ -64,7 +64,7 @@ condition_variable::__do_timed_wait(unique_lock<mutex>& lk,
void
notify_all_at_thread_exit(condition_variable& cond, unique_lock<mutex> lk)
{
__thread_local_data->notify_all_at_thread_exit(&cond, lk.release());
__thread_local_data()->notify_all_at_thread_exit(&cond, lk.release());
}
_LIBCPP_END_NAMESPACE_STD

View File

@@ -83,7 +83,7 @@ __assoc_sub_state::set_value_at_thread_exit()
if (__has_value())
throw future_error(make_error_code(future_errc::promise_already_satisfied));
__state_ |= __constructed;
__thread_local_data->__make_ready_at_thread_exit(this);
__thread_local_data()->__make_ready_at_thread_exit(this);
__lk.unlock();
}
@@ -106,7 +106,7 @@ __assoc_sub_state::set_exception_at_thread_exit(exception_ptr __p)
if (__has_value())
throw future_error(make_error_code(future_errc::promise_already_satisfied));
__exception_ = __p;
__thread_local_data->__make_ready_at_thread_exit(this);
__thread_local_data()->__make_ready_at_thread_exit(this);
__lk.unlock();
}

View File

@@ -83,7 +83,12 @@ sleep_for(const chrono::nanoseconds& ns)
} // this_thread
__thread_specific_ptr<__thread_struct> __thread_local_data;
__thread_specific_ptr<__thread_struct>&
__thread_local_data()
{
static __thread_specific_ptr<__thread_struct> __p;
return __p;
}
// __thread_struct_imp