aboutsummaryrefslogtreecommitdiff
path: root/libstdc++-v3
diff options
context:
space:
mode:
authorChris Fairles <cfairles@gcc.gnu.org>2009-02-05 17:47:56 +0000
committerChris Fairles <cfairles@gcc.gnu.org>2009-02-05 17:47:56 +0000
commit8644ecf59d370800fb1145f5facc66136d95039f (patch)
tree30d6e3368f5a827855d0c87cfc91d1ff138a7227 /libstdc++-v3
parentee04b57491958360b550bbb8047f85940ce28541 (diff)
downloadgcc-8644ecf59d370800fb1145f5facc66136d95039f.zip
gcc-8644ecf59d370800fb1145f5facc66136d95039f.tar.gz
gcc-8644ecf59d370800fb1145f5facc66136d95039f.tar.bz2
thread (__thread_data_base): Nest class in std::thread.
2009-02-05 Chris Fairles <cfairles@gcc.gnu.org> Benjamin Kosnik <bkoz@redhat.com> * include/std/thread (__thread_data_base): Nest class in std::thread. (__thread_data): Likewise. (__thread_data_ptr): Nest typedef in std::thread. * src/thread.cc (__thread_proxy): Qualify the above names. * config/abi/pre/gnu.ver: Remove unused exports. Co-Authored-By: Benjamin Kosnik <bkoz@redhat.com> From-SVN: r143969
Diffstat (limited to 'libstdc++-v3')
-rw-r--r--libstdc++-v3/ChangeLog9
-rw-r--r--libstdc++-v3/config/abi/pre/gnu.ver3
-rw-r--r--libstdc++-v3/include/std/thread55
-rw-r--r--libstdc++-v3/src/thread.cc5
4 files changed, 39 insertions, 33 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index b1340c4..341e94d 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,12 @@
+2009-02-05 Chris Fairles <cfairles@gcc.gnu.org>
+ Benjamin Kosnik <bkoz@redhat.com>
+
+ * include/std/thread (__thread_data_base): Nest class in std::thread.
+ (__thread_data): Likewise.
+ (__thread_data_ptr): Nest typedef in std::thread.
+ * src/thread.cc (__thread_proxy): Qualify the above names.
+ * config/abi/pre/gnu.ver: Remove unused exports.
+
2009-02-04 Benjamin Kosnik <bkoz@redhat.com>
* include/bits/unique_ptr.h: Remove private __this_type typedef.
diff --git a/libstdc++-v3/config/abi/pre/gnu.ver b/libstdc++-v3/config/abi/pre/gnu.ver
index 7a034db..1754f07 100644
--- a/libstdc++-v3/config/abi/pre/gnu.ver
+++ b/libstdc++-v3/config/abi/pre/gnu.ver
@@ -897,9 +897,6 @@ GLIBCXX_3.4.11 {
_ZNSt22condition_variable_anyD2Ev;
# thread
- _ZNSt10shared_ptrISt18__thread_data_baseED1Ev;
- _ZNSt12bad_weak_ptrD0Ev;
- _ZNSt12bad_weak_ptrD1Ev;
_ZNSt6thread15_M_start_threadEv;
_ZNSt6thread4joinEv;
_ZNSt6thread6detachEv;
diff --git a/libstdc++-v3/include/std/thread b/libstdc++-v3/include/std/thread
index 79bf290..231d4b3 100644
--- a/libstdc++-v3/include/std/thread
+++ b/libstdc++-v3/include/std/thread
@@ -53,41 +53,25 @@
namespace std
{
- class __thread_data_base;
-
- typedef shared_ptr<__thread_data_base> __thread_data_ptr;
-
- class __thread_data_base
+ class thread
{
public:
- __thread_data_base() = default;
- virtual ~__thread_data_base() = default;
+ class __thread_data_base;
- virtual void _M_run() = 0;
+ typedef shared_ptr<__thread_data_base> __thread_data_ptr;
- __gthread_t _M_thread_handle;
- __thread_data_ptr _M_this_ptr;
- };
-
- template<typename _Callable>
- class __thread_data : public __thread_data_base
+ class __thread_data_base
{
public:
- __thread_data(_Callable&& __f)
- : _M_func(std::forward<_Callable>(__f))
- { }
-
- void _M_run()
- { _M_func(); }
-
- private:
- _Callable _M_func;
+ __thread_data_base() = default;
+ virtual ~__thread_data_base() = default;
+
+ virtual void _M_run() = 0;
+
+ __gthread_t _M_thread_handle;
+ __thread_data_ptr _M_this_ptr;
};
-
- /// thread
- class thread
- {
- public:
+
// types
class id;
typedef __gthread_t native_handle_type;
@@ -153,6 +137,21 @@ namespace std
private:
template<typename _Callable>
+ class __thread_data : public __thread_data_base
+ {
+ public:
+ __thread_data(_Callable&& __f)
+ : _M_func(std::forward<_Callable>(__f))
+ { }
+
+ void _M_run()
+ { _M_func(); }
+
+ private:
+ _Callable _M_func;
+ };
+
+ template<typename _Callable>
__thread_data_ptr
_M_make_thread_data(_Callable&& __f)
{
diff --git a/libstdc++-v3/src/thread.cc b/libstdc++-v3/src/thread.cc
index 58e60cf..e3797e6 100644
--- a/libstdc++-v3/src/thread.cc
+++ b/libstdc++-v3/src/thread.cc
@@ -40,8 +40,9 @@ namespace std
{
void* __thread_proxy(void* __p)
{
- __thread_data_base* __t = static_cast<__thread_data_base*>(__p);
- __thread_data_ptr __local_thread_data;
+ thread::__thread_data_base* __t =
+ static_cast<thread::__thread_data_base*>(__p);
+ thread::__thread_data_ptr __local_thread_data;
__local_thread_data.swap(__t->_M_this_ptr);
__try