diff options
| author | redi <redi@138bc75d-0d04-0410-961f-82ee72b054a4> | 2009-01-22 22:33:02 +0000 |
|---|---|---|
| committer | redi <redi@138bc75d-0d04-0410-961f-82ee72b054a4> | 2009-01-22 22:33:02 +0000 |
| commit | 6c2e023acf1f786d49e47b8e790abd2e70e917fb (patch) | |
| tree | 3f4681da1d14fab66d860063dd9295fda2ad6669 /libstdc++-v3/include/std/thread | |
| parent | 917fb8b8632673fedce7e569af43f5abb9959252 (diff) | |
| download | ppe42-gcc-6c2e023acf1f786d49e47b8e790abd2e70e917fb.tar.gz ppe42-gcc-6c2e023acf1f786d49e47b8e790abd2e70e917fb.zip | |
2009-01-22 Jonathan Wakely <jwakely.gcc@gmail.com>
* include/std/thread (__thread_data_base, thread): Rename member
functions to match coding style.
(thread::thread,thread::operator=): Define move operations.
* src/thread.cc (__thread_data_base, thread): Rename member functions.
* config/abi/pre/gnu.ver: Adjust.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@143577 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libstdc++-v3/include/std/thread')
| -rw-r--r-- | libstdc++-v3/include/std/thread | 30 |
1 files changed, 19 insertions, 11 deletions
diff --git a/libstdc++-v3/include/std/thread b/libstdc++-v3/include/std/thread index 00fb018989f..e6ce0f71876 100644 --- a/libstdc++-v3/include/std/thread +++ b/libstdc++-v3/include/std/thread @@ -65,7 +65,7 @@ namespace std __thread_data_base() = default; virtual ~__thread_data_base() = default; - virtual void __run() = 0; + virtual void _M_run() = 0; __gthread_t _M_thread_handle; __thread_data_ptr _M_this_ptr; @@ -80,7 +80,7 @@ namespace std : _M_func(std::forward<_Callable>(__f)) { } - void __run() + void _M_run() { _M_func(); } private: @@ -100,21 +100,29 @@ namespace std template<typename _Callable> explicit thread(_Callable __f) - : _M_thread_data(__make_thread_data(__f)) - { __start_thread(); } + : _M_thread_data(_M_make_thread_data(__f)) + { _M_start_thread(); } template<typename _Callable, typename... _Args> thread(_Callable&& __f, _Args&&... __args) - : _M_thread_data(__make_thread_data(std::bind(__f, __args...))) - { __start_thread(); } + : _M_thread_data(_M_make_thread_data(std::bind(__f, __args...))) + { _M_start_thread(); } ~thread() { detach(); } thread(const thread&) = delete; - thread(thread&&); + thread(thread&& __t) + { swap(__t); } + thread& operator=(const thread&) = delete; - thread& operator=(thread&&); + thread& operator=(thread&& __t) + { + if (joinable()) + detach(); + swap(__t); + return *this; + } // members void @@ -150,17 +158,17 @@ namespace std private: template<typename _Callable> __thread_data_ptr - __make_thread_data(_Callable&& __f) + _M_make_thread_data(_Callable&& __f) { return __thread_data_ptr( new __thread_data<_Callable>(std::forward<_Callable>(__f))); } __thread_data_ptr - __make_thread_data(void(*__f)()) + _M_make_thread_data(void(*__f)()) { return __thread_data_ptr(new __thread_data<void(*)()>(__f)); } - void __start_thread(); + void _M_start_thread(); __thread_data_ptr _M_thread_data; mutable mutex _M_thread_data_mutex; |

