gcc/libstdc++-v3/include/std/thread

284 lines
6.5 KiB
Plaintext
Raw Normal View History

thread: New. 2008-09-12 Chris Fairles <chris.fairles@gmail.com> Benjamin Kosnik <bkoz@redhat.com> * include/std/thread: New. * include/Makefile.am: Update. * include/Makefile.in: Regenerate. * src/thread.cc: New. * src/Makefile.am: Update. * src/Makefile.in: Regenerate. * acinclude.m4: Add check for nanosleep. * configure.ac: Call it. * configure: Regenerate. * config.h.in: Likewise. * config/abi/pre/gnu.ver: Add exports. * doc/doxygen/user.cfg.in: Add thread header. * testsuite/lib/libstdc++.exp (check_v3_target_nanosleep): Add. * testsuite/lib/dg-options.exp (dg-require-nanosleep): Add. * testsuite/30_threads/thread/cons/1.cc: New. * testsuite/30_threads/thread/cons/2.cc: Likewise. * testsuite/30_threads/thread/cons/3.cc: Likewise. * testsuite/30_threads/thread/cons/4.cc: Likewise. * testsuite/30_threads/thread/algorithm/1.cc: Likewise. * testsuite/30_threads/thread/algorithm/2.cc: Likewise. * testsuite/30_threads/thread/member/1.cc: Likewise. * testsuite/30_threads/thread/member/2.cc: Likewise. * testsuite/30_threads/thread/member/3.cc: Likewise. * testsuite/30_threads/thread/this_thread/1.cc: Likewise. * testsuite/30_threads/thread/this_thread/2.cc: Likewise. * testsuite/30_threads/thread/this_thread/3.cc: Likewise. * testsuite/30_threads/thread/this_thread/4.cc: Likewise. * testsuite/30_threads/headers/thread/types_std_c++0x.cc: Likewise. * testsuite/30_threads/headers/thread/std_c++0x_neg.cc: Likewise. * testsuite/17_intro/headers/c++200x/all.cc: Add thread. * testsuite/17_intro/headers/c++200x/all_multiple_inclusion.cc: Add thread, condition_variable and mutex. Co-Authored-By: Benjamin Kosnik <bkoz@redhat.com> From-SVN: r140332
2008-09-13 02:32:37 +02:00
// <thread> -*- C++ -*-
// Copyright (C) 2008, 2009 Free Software Foundation, Inc.
thread: New. 2008-09-12 Chris Fairles <chris.fairles@gmail.com> Benjamin Kosnik <bkoz@redhat.com> * include/std/thread: New. * include/Makefile.am: Update. * include/Makefile.in: Regenerate. * src/thread.cc: New. * src/Makefile.am: Update. * src/Makefile.in: Regenerate. * acinclude.m4: Add check for nanosleep. * configure.ac: Call it. * configure: Regenerate. * config.h.in: Likewise. * config/abi/pre/gnu.ver: Add exports. * doc/doxygen/user.cfg.in: Add thread header. * testsuite/lib/libstdc++.exp (check_v3_target_nanosleep): Add. * testsuite/lib/dg-options.exp (dg-require-nanosleep): Add. * testsuite/30_threads/thread/cons/1.cc: New. * testsuite/30_threads/thread/cons/2.cc: Likewise. * testsuite/30_threads/thread/cons/3.cc: Likewise. * testsuite/30_threads/thread/cons/4.cc: Likewise. * testsuite/30_threads/thread/algorithm/1.cc: Likewise. * testsuite/30_threads/thread/algorithm/2.cc: Likewise. * testsuite/30_threads/thread/member/1.cc: Likewise. * testsuite/30_threads/thread/member/2.cc: Likewise. * testsuite/30_threads/thread/member/3.cc: Likewise. * testsuite/30_threads/thread/this_thread/1.cc: Likewise. * testsuite/30_threads/thread/this_thread/2.cc: Likewise. * testsuite/30_threads/thread/this_thread/3.cc: Likewise. * testsuite/30_threads/thread/this_thread/4.cc: Likewise. * testsuite/30_threads/headers/thread/types_std_c++0x.cc: Likewise. * testsuite/30_threads/headers/thread/std_c++0x_neg.cc: Likewise. * testsuite/17_intro/headers/c++200x/all.cc: Add thread. * testsuite/17_intro/headers/c++200x/all_multiple_inclusion.cc: Add thread, condition_variable and mutex. Co-Authored-By: Benjamin Kosnik <bkoz@redhat.com> From-SVN: r140332
2008-09-13 02:32:37 +02:00
//
// This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it and/or modify it under the
// terms of the GNU General Public License as published by the
// Free Software Foundation; either version 2, or (at your option)
// any later version.
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
// You should have received a copy of the GNU General Public License
// along with this library; see the file COPYING. If not, write to
// the Free Software Foundation, 51 Franklin Street, Fifth Floor,
// Boston, MA 02110-1301, USA.
// As a special exception, you may use this file as part of a free software
// library without restriction. Specifically, if other files instantiate
// templates or use macros or inline functions from this file, or you compile
// this file and link it with other files to produce an executable, this
// file does not by itself cause the resulting executable to be covered by
// the GNU General Public License. This exception does not however
// invalidate any other reasons why the executable file might be covered by
// the GNU General Public License.
/** @file thread
* This is a Standard C++ Library header.
*/
#ifndef _GLIBCXX_THREAD
#define _GLIBCXX_THREAD 1
#pragma GCC system_header
#ifndef __GXX_EXPERIMENTAL_CXX0X__
# include <c++0x_warning.h>
#else
#include <chrono>
#include <functional>
#include <memory>
#include <mutex>
#include <condition_variable>
#include <cstddef>
#include <bits/functexcept.h>
#include <bits/gthr.h>
#if defined(_GLIBCXX_HAS_GTHREADS) && defined(_GLIBCXX_USE_C99_STDINT_TR1)
namespace std
{
/// thread
class thread
thread: New. 2008-09-12 Chris Fairles <chris.fairles@gmail.com> Benjamin Kosnik <bkoz@redhat.com> * include/std/thread: New. * include/Makefile.am: Update. * include/Makefile.in: Regenerate. * src/thread.cc: New. * src/Makefile.am: Update. * src/Makefile.in: Regenerate. * acinclude.m4: Add check for nanosleep. * configure.ac: Call it. * configure: Regenerate. * config.h.in: Likewise. * config/abi/pre/gnu.ver: Add exports. * doc/doxygen/user.cfg.in: Add thread header. * testsuite/lib/libstdc++.exp (check_v3_target_nanosleep): Add. * testsuite/lib/dg-options.exp (dg-require-nanosleep): Add. * testsuite/30_threads/thread/cons/1.cc: New. * testsuite/30_threads/thread/cons/2.cc: Likewise. * testsuite/30_threads/thread/cons/3.cc: Likewise. * testsuite/30_threads/thread/cons/4.cc: Likewise. * testsuite/30_threads/thread/algorithm/1.cc: Likewise. * testsuite/30_threads/thread/algorithm/2.cc: Likewise. * testsuite/30_threads/thread/member/1.cc: Likewise. * testsuite/30_threads/thread/member/2.cc: Likewise. * testsuite/30_threads/thread/member/3.cc: Likewise. * testsuite/30_threads/thread/this_thread/1.cc: Likewise. * testsuite/30_threads/thread/this_thread/2.cc: Likewise. * testsuite/30_threads/thread/this_thread/3.cc: Likewise. * testsuite/30_threads/thread/this_thread/4.cc: Likewise. * testsuite/30_threads/headers/thread/types_std_c++0x.cc: Likewise. * testsuite/30_threads/headers/thread/std_c++0x_neg.cc: Likewise. * testsuite/17_intro/headers/c++200x/all.cc: Add thread. * testsuite/17_intro/headers/c++200x/all_multiple_inclusion.cc: Add thread, condition_variable and mutex. Co-Authored-By: Benjamin Kosnik <bkoz@redhat.com> From-SVN: r140332
2008-09-13 02:32:37 +02:00
{
public:
typedef __gthread_t native_handle_type;
/// thread::id
class id
thread: New. 2008-09-12 Chris Fairles <chris.fairles@gmail.com> Benjamin Kosnik <bkoz@redhat.com> * include/std/thread: New. * include/Makefile.am: Update. * include/Makefile.in: Regenerate. * src/thread.cc: New. * src/Makefile.am: Update. * src/Makefile.in: Regenerate. * acinclude.m4: Add check for nanosleep. * configure.ac: Call it. * configure: Regenerate. * config.h.in: Likewise. * config/abi/pre/gnu.ver: Add exports. * doc/doxygen/user.cfg.in: Add thread header. * testsuite/lib/libstdc++.exp (check_v3_target_nanosleep): Add. * testsuite/lib/dg-options.exp (dg-require-nanosleep): Add. * testsuite/30_threads/thread/cons/1.cc: New. * testsuite/30_threads/thread/cons/2.cc: Likewise. * testsuite/30_threads/thread/cons/3.cc: Likewise. * testsuite/30_threads/thread/cons/4.cc: Likewise. * testsuite/30_threads/thread/algorithm/1.cc: Likewise. * testsuite/30_threads/thread/algorithm/2.cc: Likewise. * testsuite/30_threads/thread/member/1.cc: Likewise. * testsuite/30_threads/thread/member/2.cc: Likewise. * testsuite/30_threads/thread/member/3.cc: Likewise. * testsuite/30_threads/thread/this_thread/1.cc: Likewise. * testsuite/30_threads/thread/this_thread/2.cc: Likewise. * testsuite/30_threads/thread/this_thread/3.cc: Likewise. * testsuite/30_threads/thread/this_thread/4.cc: Likewise. * testsuite/30_threads/headers/thread/types_std_c++0x.cc: Likewise. * testsuite/30_threads/headers/thread/std_c++0x_neg.cc: Likewise. * testsuite/17_intro/headers/c++200x/all.cc: Add thread. * testsuite/17_intro/headers/c++200x/all_multiple_inclusion.cc: Add thread, condition_variable and mutex. Co-Authored-By: Benjamin Kosnik <bkoz@redhat.com> From-SVN: r140332
2008-09-13 02:32:37 +02:00
{
native_handle_type _M_thread;
thread: New. 2008-09-12 Chris Fairles <chris.fairles@gmail.com> Benjamin Kosnik <bkoz@redhat.com> * include/std/thread: New. * include/Makefile.am: Update. * include/Makefile.in: Regenerate. * src/thread.cc: New. * src/Makefile.am: Update. * src/Makefile.in: Regenerate. * acinclude.m4: Add check for nanosleep. * configure.ac: Call it. * configure: Regenerate. * config.h.in: Likewise. * config/abi/pre/gnu.ver: Add exports. * doc/doxygen/user.cfg.in: Add thread header. * testsuite/lib/libstdc++.exp (check_v3_target_nanosleep): Add. * testsuite/lib/dg-options.exp (dg-require-nanosleep): Add. * testsuite/30_threads/thread/cons/1.cc: New. * testsuite/30_threads/thread/cons/2.cc: Likewise. * testsuite/30_threads/thread/cons/3.cc: Likewise. * testsuite/30_threads/thread/cons/4.cc: Likewise. * testsuite/30_threads/thread/algorithm/1.cc: Likewise. * testsuite/30_threads/thread/algorithm/2.cc: Likewise. * testsuite/30_threads/thread/member/1.cc: Likewise. * testsuite/30_threads/thread/member/2.cc: Likewise. * testsuite/30_threads/thread/member/3.cc: Likewise. * testsuite/30_threads/thread/this_thread/1.cc: Likewise. * testsuite/30_threads/thread/this_thread/2.cc: Likewise. * testsuite/30_threads/thread/this_thread/3.cc: Likewise. * testsuite/30_threads/thread/this_thread/4.cc: Likewise. * testsuite/30_threads/headers/thread/types_std_c++0x.cc: Likewise. * testsuite/30_threads/headers/thread/std_c++0x_neg.cc: Likewise. * testsuite/17_intro/headers/c++200x/all.cc: Add thread. * testsuite/17_intro/headers/c++200x/all_multiple_inclusion.cc: Add thread, condition_variable and mutex. Co-Authored-By: Benjamin Kosnik <bkoz@redhat.com> From-SVN: r140332
2008-09-13 02:32:37 +02:00
public:
id() : _M_thread() { }
explicit
id(native_handle_type __id) : _M_thread(__id) { }
private:
friend class thread;
friend bool
operator==(thread::id __x, thread::id __y)
{ return __gthread_equal(__x._M_thread, __y._M_thread); }
friend bool
operator<(thread::id __x, thread::id __y)
{ return __x._M_thread < __y._M_thread; }
template<class _CharT, class _Traits>
friend basic_ostream<_CharT, _Traits>&
operator<<(basic_ostream<_CharT, _Traits>&& __out, thread::id __id);
};
struct _Impl_base;
typedef shared_ptr<_Impl_base> __shared_base_type;
struct _Impl_base
{
id _M_id;
__shared_base_type _M_this_ptr;
_Impl_base() = default;
virtual ~_Impl_base() = default;
virtual void
_M_run() = 0;
thread: New. 2008-09-12 Chris Fairles <chris.fairles@gmail.com> Benjamin Kosnik <bkoz@redhat.com> * include/std/thread: New. * include/Makefile.am: Update. * include/Makefile.in: Regenerate. * src/thread.cc: New. * src/Makefile.am: Update. * src/Makefile.in: Regenerate. * acinclude.m4: Add check for nanosleep. * configure.ac: Call it. * configure: Regenerate. * config.h.in: Likewise. * config/abi/pre/gnu.ver: Add exports. * doc/doxygen/user.cfg.in: Add thread header. * testsuite/lib/libstdc++.exp (check_v3_target_nanosleep): Add. * testsuite/lib/dg-options.exp (dg-require-nanosleep): Add. * testsuite/30_threads/thread/cons/1.cc: New. * testsuite/30_threads/thread/cons/2.cc: Likewise. * testsuite/30_threads/thread/cons/3.cc: Likewise. * testsuite/30_threads/thread/cons/4.cc: Likewise. * testsuite/30_threads/thread/algorithm/1.cc: Likewise. * testsuite/30_threads/thread/algorithm/2.cc: Likewise. * testsuite/30_threads/thread/member/1.cc: Likewise. * testsuite/30_threads/thread/member/2.cc: Likewise. * testsuite/30_threads/thread/member/3.cc: Likewise. * testsuite/30_threads/thread/this_thread/1.cc: Likewise. * testsuite/30_threads/thread/this_thread/2.cc: Likewise. * testsuite/30_threads/thread/this_thread/3.cc: Likewise. * testsuite/30_threads/thread/this_thread/4.cc: Likewise. * testsuite/30_threads/headers/thread/types_std_c++0x.cc: Likewise. * testsuite/30_threads/headers/thread/std_c++0x_neg.cc: Likewise. * testsuite/17_intro/headers/c++200x/all.cc: Add thread. * testsuite/17_intro/headers/c++200x/all_multiple_inclusion.cc: Add thread, condition_variable and mutex. Co-Authored-By: Benjamin Kosnik <bkoz@redhat.com> From-SVN: r140332
2008-09-13 02:32:37 +02:00
};
template<typename _Callable>
class _Impl : public _Impl_base
{
_Callable _M_func;
public:
_Impl(_Callable&& __f) : _M_func(std::forward<_Callable>(__f))
{ }
void
_M_run() { _M_func(); }
};
private:
// NB: Store the base type here.
__shared_base_type _M_data;
public:
thread() = default;
thread(const thread&) = delete;
thread(thread&& __t)
{ swap(__t); }
thread: New. 2008-09-12 Chris Fairles <chris.fairles@gmail.com> Benjamin Kosnik <bkoz@redhat.com> * include/std/thread: New. * include/Makefile.am: Update. * include/Makefile.in: Regenerate. * src/thread.cc: New. * src/Makefile.am: Update. * src/Makefile.in: Regenerate. * acinclude.m4: Add check for nanosleep. * configure.ac: Call it. * configure: Regenerate. * config.h.in: Likewise. * config/abi/pre/gnu.ver: Add exports. * doc/doxygen/user.cfg.in: Add thread header. * testsuite/lib/libstdc++.exp (check_v3_target_nanosleep): Add. * testsuite/lib/dg-options.exp (dg-require-nanosleep): Add. * testsuite/30_threads/thread/cons/1.cc: New. * testsuite/30_threads/thread/cons/2.cc: Likewise. * testsuite/30_threads/thread/cons/3.cc: Likewise. * testsuite/30_threads/thread/cons/4.cc: Likewise. * testsuite/30_threads/thread/algorithm/1.cc: Likewise. * testsuite/30_threads/thread/algorithm/2.cc: Likewise. * testsuite/30_threads/thread/member/1.cc: Likewise. * testsuite/30_threads/thread/member/2.cc: Likewise. * testsuite/30_threads/thread/member/3.cc: Likewise. * testsuite/30_threads/thread/this_thread/1.cc: Likewise. * testsuite/30_threads/thread/this_thread/2.cc: Likewise. * testsuite/30_threads/thread/this_thread/3.cc: Likewise. * testsuite/30_threads/thread/this_thread/4.cc: Likewise. * testsuite/30_threads/headers/thread/types_std_c++0x.cc: Likewise. * testsuite/30_threads/headers/thread/std_c++0x_neg.cc: Likewise. * testsuite/17_intro/headers/c++200x/all.cc: Add thread. * testsuite/17_intro/headers/c++200x/all_multiple_inclusion.cc: Add thread, condition_variable and mutex. Co-Authored-By: Benjamin Kosnik <bkoz@redhat.com> From-SVN: r140332
2008-09-13 02:32:37 +02:00
template<typename _Callable>
explicit thread(_Callable __f)
: _M_data(_M_make_shared_data<_Callable>(__f))
{ _M_start_thread(); }
thread: New. 2008-09-12 Chris Fairles <chris.fairles@gmail.com> Benjamin Kosnik <bkoz@redhat.com> * include/std/thread: New. * include/Makefile.am: Update. * include/Makefile.in: Regenerate. * src/thread.cc: New. * src/Makefile.am: Update. * src/Makefile.in: Regenerate. * acinclude.m4: Add check for nanosleep. * configure.ac: Call it. * configure: Regenerate. * config.h.in: Likewise. * config/abi/pre/gnu.ver: Add exports. * doc/doxygen/user.cfg.in: Add thread header. * testsuite/lib/libstdc++.exp (check_v3_target_nanosleep): Add. * testsuite/lib/dg-options.exp (dg-require-nanosleep): Add. * testsuite/30_threads/thread/cons/1.cc: New. * testsuite/30_threads/thread/cons/2.cc: Likewise. * testsuite/30_threads/thread/cons/3.cc: Likewise. * testsuite/30_threads/thread/cons/4.cc: Likewise. * testsuite/30_threads/thread/algorithm/1.cc: Likewise. * testsuite/30_threads/thread/algorithm/2.cc: Likewise. * testsuite/30_threads/thread/member/1.cc: Likewise. * testsuite/30_threads/thread/member/2.cc: Likewise. * testsuite/30_threads/thread/member/3.cc: Likewise. * testsuite/30_threads/thread/this_thread/1.cc: Likewise. * testsuite/30_threads/thread/this_thread/2.cc: Likewise. * testsuite/30_threads/thread/this_thread/3.cc: Likewise. * testsuite/30_threads/thread/this_thread/4.cc: Likewise. * testsuite/30_threads/headers/thread/types_std_c++0x.cc: Likewise. * testsuite/30_threads/headers/thread/std_c++0x_neg.cc: Likewise. * testsuite/17_intro/headers/c++200x/all.cc: Add thread. * testsuite/17_intro/headers/c++200x/all_multiple_inclusion.cc: Add thread, condition_variable and mutex. Co-Authored-By: Benjamin Kosnik <bkoz@redhat.com> From-SVN: r140332
2008-09-13 02:32:37 +02:00
template<typename _Callable, typename... _Args>
thread(_Callable&& __f, _Args&&... __args)
: _M_data(_M_make_shared_data(std::bind(__f, __args...)))
{ _M_start_thread(); }
thread: New. 2008-09-12 Chris Fairles <chris.fairles@gmail.com> Benjamin Kosnik <bkoz@redhat.com> * include/std/thread: New. * include/Makefile.am: Update. * include/Makefile.in: Regenerate. * src/thread.cc: New. * src/Makefile.am: Update. * src/Makefile.in: Regenerate. * acinclude.m4: Add check for nanosleep. * configure.ac: Call it. * configure: Regenerate. * config.h.in: Likewise. * config/abi/pre/gnu.ver: Add exports. * doc/doxygen/user.cfg.in: Add thread header. * testsuite/lib/libstdc++.exp (check_v3_target_nanosleep): Add. * testsuite/lib/dg-options.exp (dg-require-nanosleep): Add. * testsuite/30_threads/thread/cons/1.cc: New. * testsuite/30_threads/thread/cons/2.cc: Likewise. * testsuite/30_threads/thread/cons/3.cc: Likewise. * testsuite/30_threads/thread/cons/4.cc: Likewise. * testsuite/30_threads/thread/algorithm/1.cc: Likewise. * testsuite/30_threads/thread/algorithm/2.cc: Likewise. * testsuite/30_threads/thread/member/1.cc: Likewise. * testsuite/30_threads/thread/member/2.cc: Likewise. * testsuite/30_threads/thread/member/3.cc: Likewise. * testsuite/30_threads/thread/this_thread/1.cc: Likewise. * testsuite/30_threads/thread/this_thread/2.cc: Likewise. * testsuite/30_threads/thread/this_thread/3.cc: Likewise. * testsuite/30_threads/thread/this_thread/4.cc: Likewise. * testsuite/30_threads/headers/thread/types_std_c++0x.cc: Likewise. * testsuite/30_threads/headers/thread/std_c++0x_neg.cc: Likewise. * testsuite/17_intro/headers/c++200x/all.cc: Add thread. * testsuite/17_intro/headers/c++200x/all_multiple_inclusion.cc: Add thread, condition_variable and mutex. Co-Authored-By: Benjamin Kosnik <bkoz@redhat.com> From-SVN: r140332
2008-09-13 02:32:37 +02:00
~thread()
{
if (joinable())
detach();
}
thread: New. 2008-09-12 Chris Fairles <chris.fairles@gmail.com> Benjamin Kosnik <bkoz@redhat.com> * include/std/thread: New. * include/Makefile.am: Update. * include/Makefile.in: Regenerate. * src/thread.cc: New. * src/Makefile.am: Update. * src/Makefile.in: Regenerate. * acinclude.m4: Add check for nanosleep. * configure.ac: Call it. * configure: Regenerate. * config.h.in: Likewise. * config/abi/pre/gnu.ver: Add exports. * doc/doxygen/user.cfg.in: Add thread header. * testsuite/lib/libstdc++.exp (check_v3_target_nanosleep): Add. * testsuite/lib/dg-options.exp (dg-require-nanosleep): Add. * testsuite/30_threads/thread/cons/1.cc: New. * testsuite/30_threads/thread/cons/2.cc: Likewise. * testsuite/30_threads/thread/cons/3.cc: Likewise. * testsuite/30_threads/thread/cons/4.cc: Likewise. * testsuite/30_threads/thread/algorithm/1.cc: Likewise. * testsuite/30_threads/thread/algorithm/2.cc: Likewise. * testsuite/30_threads/thread/member/1.cc: Likewise. * testsuite/30_threads/thread/member/2.cc: Likewise. * testsuite/30_threads/thread/member/3.cc: Likewise. * testsuite/30_threads/thread/this_thread/1.cc: Likewise. * testsuite/30_threads/thread/this_thread/2.cc: Likewise. * testsuite/30_threads/thread/this_thread/3.cc: Likewise. * testsuite/30_threads/thread/this_thread/4.cc: Likewise. * testsuite/30_threads/headers/thread/types_std_c++0x.cc: Likewise. * testsuite/30_threads/headers/thread/std_c++0x_neg.cc: Likewise. * testsuite/17_intro/headers/c++200x/all.cc: Add thread. * testsuite/17_intro/headers/c++200x/all_multiple_inclusion.cc: Add thread, condition_variable and mutex. Co-Authored-By: Benjamin Kosnik <bkoz@redhat.com> From-SVN: r140332
2008-09-13 02:32:37 +02:00
thread& operator=(const thread&) = delete;
thread& operator=(thread&& __t)
{
if (joinable())
detach();
swap(__t);
return *this;
}
thread: New. 2008-09-12 Chris Fairles <chris.fairles@gmail.com> Benjamin Kosnik <bkoz@redhat.com> * include/std/thread: New. * include/Makefile.am: Update. * include/Makefile.in: Regenerate. * src/thread.cc: New. * src/Makefile.am: Update. * src/Makefile.in: Regenerate. * acinclude.m4: Add check for nanosleep. * configure.ac: Call it. * configure: Regenerate. * config.h.in: Likewise. * config/abi/pre/gnu.ver: Add exports. * doc/doxygen/user.cfg.in: Add thread header. * testsuite/lib/libstdc++.exp (check_v3_target_nanosleep): Add. * testsuite/lib/dg-options.exp (dg-require-nanosleep): Add. * testsuite/30_threads/thread/cons/1.cc: New. * testsuite/30_threads/thread/cons/2.cc: Likewise. * testsuite/30_threads/thread/cons/3.cc: Likewise. * testsuite/30_threads/thread/cons/4.cc: Likewise. * testsuite/30_threads/thread/algorithm/1.cc: Likewise. * testsuite/30_threads/thread/algorithm/2.cc: Likewise. * testsuite/30_threads/thread/member/1.cc: Likewise. * testsuite/30_threads/thread/member/2.cc: Likewise. * testsuite/30_threads/thread/member/3.cc: Likewise. * testsuite/30_threads/thread/this_thread/1.cc: Likewise. * testsuite/30_threads/thread/this_thread/2.cc: Likewise. * testsuite/30_threads/thread/this_thread/3.cc: Likewise. * testsuite/30_threads/thread/this_thread/4.cc: Likewise. * testsuite/30_threads/headers/thread/types_std_c++0x.cc: Likewise. * testsuite/30_threads/headers/thread/std_c++0x_neg.cc: Likewise. * testsuite/17_intro/headers/c++200x/all.cc: Add thread. * testsuite/17_intro/headers/c++200x/all_multiple_inclusion.cc: Add thread, condition_variable and mutex. Co-Authored-By: Benjamin Kosnik <bkoz@redhat.com> From-SVN: r140332
2008-09-13 02:32:37 +02:00
void
swap(thread&& __t)
{ std::swap(_M_data, __t._M_data); }
thread: New. 2008-09-12 Chris Fairles <chris.fairles@gmail.com> Benjamin Kosnik <bkoz@redhat.com> * include/std/thread: New. * include/Makefile.am: Update. * include/Makefile.in: Regenerate. * src/thread.cc: New. * src/Makefile.am: Update. * src/Makefile.in: Regenerate. * acinclude.m4: Add check for nanosleep. * configure.ac: Call it. * configure: Regenerate. * config.h.in: Likewise. * config/abi/pre/gnu.ver: Add exports. * doc/doxygen/user.cfg.in: Add thread header. * testsuite/lib/libstdc++.exp (check_v3_target_nanosleep): Add. * testsuite/lib/dg-options.exp (dg-require-nanosleep): Add. * testsuite/30_threads/thread/cons/1.cc: New. * testsuite/30_threads/thread/cons/2.cc: Likewise. * testsuite/30_threads/thread/cons/3.cc: Likewise. * testsuite/30_threads/thread/cons/4.cc: Likewise. * testsuite/30_threads/thread/algorithm/1.cc: Likewise. * testsuite/30_threads/thread/algorithm/2.cc: Likewise. * testsuite/30_threads/thread/member/1.cc: Likewise. * testsuite/30_threads/thread/member/2.cc: Likewise. * testsuite/30_threads/thread/member/3.cc: Likewise. * testsuite/30_threads/thread/this_thread/1.cc: Likewise. * testsuite/30_threads/thread/this_thread/2.cc: Likewise. * testsuite/30_threads/thread/this_thread/3.cc: Likewise. * testsuite/30_threads/thread/this_thread/4.cc: Likewise. * testsuite/30_threads/headers/thread/types_std_c++0x.cc: Likewise. * testsuite/30_threads/headers/thread/std_c++0x_neg.cc: Likewise. * testsuite/17_intro/headers/c++200x/all.cc: Add thread. * testsuite/17_intro/headers/c++200x/all_multiple_inclusion.cc: Add thread, condition_variable and mutex. Co-Authored-By: Benjamin Kosnik <bkoz@redhat.com> From-SVN: r140332
2008-09-13 02:32:37 +02:00
bool
joinable() const
{ return _M_data; }
thread: New. 2008-09-12 Chris Fairles <chris.fairles@gmail.com> Benjamin Kosnik <bkoz@redhat.com> * include/std/thread: New. * include/Makefile.am: Update. * include/Makefile.in: Regenerate. * src/thread.cc: New. * src/Makefile.am: Update. * src/Makefile.in: Regenerate. * acinclude.m4: Add check for nanosleep. * configure.ac: Call it. * configure: Regenerate. * config.h.in: Likewise. * config/abi/pre/gnu.ver: Add exports. * doc/doxygen/user.cfg.in: Add thread header. * testsuite/lib/libstdc++.exp (check_v3_target_nanosleep): Add. * testsuite/lib/dg-options.exp (dg-require-nanosleep): Add. * testsuite/30_threads/thread/cons/1.cc: New. * testsuite/30_threads/thread/cons/2.cc: Likewise. * testsuite/30_threads/thread/cons/3.cc: Likewise. * testsuite/30_threads/thread/cons/4.cc: Likewise. * testsuite/30_threads/thread/algorithm/1.cc: Likewise. * testsuite/30_threads/thread/algorithm/2.cc: Likewise. * testsuite/30_threads/thread/member/1.cc: Likewise. * testsuite/30_threads/thread/member/2.cc: Likewise. * testsuite/30_threads/thread/member/3.cc: Likewise. * testsuite/30_threads/thread/this_thread/1.cc: Likewise. * testsuite/30_threads/thread/this_thread/2.cc: Likewise. * testsuite/30_threads/thread/this_thread/3.cc: Likewise. * testsuite/30_threads/thread/this_thread/4.cc: Likewise. * testsuite/30_threads/headers/thread/types_std_c++0x.cc: Likewise. * testsuite/30_threads/headers/thread/std_c++0x_neg.cc: Likewise. * testsuite/17_intro/headers/c++200x/all.cc: Add thread. * testsuite/17_intro/headers/c++200x/all_multiple_inclusion.cc: Add thread, condition_variable and mutex. Co-Authored-By: Benjamin Kosnik <bkoz@redhat.com> From-SVN: r140332
2008-09-13 02:32:37 +02:00
void
thread: New. 2008-09-12 Chris Fairles <chris.fairles@gmail.com> Benjamin Kosnik <bkoz@redhat.com> * include/std/thread: New. * include/Makefile.am: Update. * include/Makefile.in: Regenerate. * src/thread.cc: New. * src/Makefile.am: Update. * src/Makefile.in: Regenerate. * acinclude.m4: Add check for nanosleep. * configure.ac: Call it. * configure: Regenerate. * config.h.in: Likewise. * config/abi/pre/gnu.ver: Add exports. * doc/doxygen/user.cfg.in: Add thread header. * testsuite/lib/libstdc++.exp (check_v3_target_nanosleep): Add. * testsuite/lib/dg-options.exp (dg-require-nanosleep): Add. * testsuite/30_threads/thread/cons/1.cc: New. * testsuite/30_threads/thread/cons/2.cc: Likewise. * testsuite/30_threads/thread/cons/3.cc: Likewise. * testsuite/30_threads/thread/cons/4.cc: Likewise. * testsuite/30_threads/thread/algorithm/1.cc: Likewise. * testsuite/30_threads/thread/algorithm/2.cc: Likewise. * testsuite/30_threads/thread/member/1.cc: Likewise. * testsuite/30_threads/thread/member/2.cc: Likewise. * testsuite/30_threads/thread/member/3.cc: Likewise. * testsuite/30_threads/thread/this_thread/1.cc: Likewise. * testsuite/30_threads/thread/this_thread/2.cc: Likewise. * testsuite/30_threads/thread/this_thread/3.cc: Likewise. * testsuite/30_threads/thread/this_thread/4.cc: Likewise. * testsuite/30_threads/headers/thread/types_std_c++0x.cc: Likewise. * testsuite/30_threads/headers/thread/std_c++0x_neg.cc: Likewise. * testsuite/17_intro/headers/c++200x/all.cc: Add thread. * testsuite/17_intro/headers/c++200x/all_multiple_inclusion.cc: Add thread, condition_variable and mutex. Co-Authored-By: Benjamin Kosnik <bkoz@redhat.com> From-SVN: r140332
2008-09-13 02:32:37 +02:00
join();
void
thread: New. 2008-09-12 Chris Fairles <chris.fairles@gmail.com> Benjamin Kosnik <bkoz@redhat.com> * include/std/thread: New. * include/Makefile.am: Update. * include/Makefile.in: Regenerate. * src/thread.cc: New. * src/Makefile.am: Update. * src/Makefile.in: Regenerate. * acinclude.m4: Add check for nanosleep. * configure.ac: Call it. * configure: Regenerate. * config.h.in: Likewise. * config/abi/pre/gnu.ver: Add exports. * doc/doxygen/user.cfg.in: Add thread header. * testsuite/lib/libstdc++.exp (check_v3_target_nanosleep): Add. * testsuite/lib/dg-options.exp (dg-require-nanosleep): Add. * testsuite/30_threads/thread/cons/1.cc: New. * testsuite/30_threads/thread/cons/2.cc: Likewise. * testsuite/30_threads/thread/cons/3.cc: Likewise. * testsuite/30_threads/thread/cons/4.cc: Likewise. * testsuite/30_threads/thread/algorithm/1.cc: Likewise. * testsuite/30_threads/thread/algorithm/2.cc: Likewise. * testsuite/30_threads/thread/member/1.cc: Likewise. * testsuite/30_threads/thread/member/2.cc: Likewise. * testsuite/30_threads/thread/member/3.cc: Likewise. * testsuite/30_threads/thread/this_thread/1.cc: Likewise. * testsuite/30_threads/thread/this_thread/2.cc: Likewise. * testsuite/30_threads/thread/this_thread/3.cc: Likewise. * testsuite/30_threads/thread/this_thread/4.cc: Likewise. * testsuite/30_threads/headers/thread/types_std_c++0x.cc: Likewise. * testsuite/30_threads/headers/thread/std_c++0x_neg.cc: Likewise. * testsuite/17_intro/headers/c++200x/all.cc: Add thread. * testsuite/17_intro/headers/c++200x/all_multiple_inclusion.cc: Add thread, condition_variable and mutex. Co-Authored-By: Benjamin Kosnik <bkoz@redhat.com> From-SVN: r140332
2008-09-13 02:32:37 +02:00
detach();
thread::id
get_id() const
{
if (_M_data)
return thread::id(_M_data->_M_id._M_thread);
else
return thread::id();
}
thread: New. 2008-09-12 Chris Fairles <chris.fairles@gmail.com> Benjamin Kosnik <bkoz@redhat.com> * include/std/thread: New. * include/Makefile.am: Update. * include/Makefile.in: Regenerate. * src/thread.cc: New. * src/Makefile.am: Update. * src/Makefile.in: Regenerate. * acinclude.m4: Add check for nanosleep. * configure.ac: Call it. * configure: Regenerate. * config.h.in: Likewise. * config/abi/pre/gnu.ver: Add exports. * doc/doxygen/user.cfg.in: Add thread header. * testsuite/lib/libstdc++.exp (check_v3_target_nanosleep): Add. * testsuite/lib/dg-options.exp (dg-require-nanosleep): Add. * testsuite/30_threads/thread/cons/1.cc: New. * testsuite/30_threads/thread/cons/2.cc: Likewise. * testsuite/30_threads/thread/cons/3.cc: Likewise. * testsuite/30_threads/thread/cons/4.cc: Likewise. * testsuite/30_threads/thread/algorithm/1.cc: Likewise. * testsuite/30_threads/thread/algorithm/2.cc: Likewise. * testsuite/30_threads/thread/member/1.cc: Likewise. * testsuite/30_threads/thread/member/2.cc: Likewise. * testsuite/30_threads/thread/member/3.cc: Likewise. * testsuite/30_threads/thread/this_thread/1.cc: Likewise. * testsuite/30_threads/thread/this_thread/2.cc: Likewise. * testsuite/30_threads/thread/this_thread/3.cc: Likewise. * testsuite/30_threads/thread/this_thread/4.cc: Likewise. * testsuite/30_threads/headers/thread/types_std_c++0x.cc: Likewise. * testsuite/30_threads/headers/thread/std_c++0x_neg.cc: Likewise. * testsuite/17_intro/headers/c++200x/all.cc: Add thread. * testsuite/17_intro/headers/c++200x/all_multiple_inclusion.cc: Add thread, condition_variable and mutex. Co-Authored-By: Benjamin Kosnik <bkoz@redhat.com> From-SVN: r140332
2008-09-13 02:32:37 +02:00
/** @pre thread is joinable
*/
native_handle_type
thread: New. 2008-09-12 Chris Fairles <chris.fairles@gmail.com> Benjamin Kosnik <bkoz@redhat.com> * include/std/thread: New. * include/Makefile.am: Update. * include/Makefile.in: Regenerate. * src/thread.cc: New. * src/Makefile.am: Update. * src/Makefile.in: Regenerate. * acinclude.m4: Add check for nanosleep. * configure.ac: Call it. * configure: Regenerate. * config.h.in: Likewise. * config/abi/pre/gnu.ver: Add exports. * doc/doxygen/user.cfg.in: Add thread header. * testsuite/lib/libstdc++.exp (check_v3_target_nanosleep): Add. * testsuite/lib/dg-options.exp (dg-require-nanosleep): Add. * testsuite/30_threads/thread/cons/1.cc: New. * testsuite/30_threads/thread/cons/2.cc: Likewise. * testsuite/30_threads/thread/cons/3.cc: Likewise. * testsuite/30_threads/thread/cons/4.cc: Likewise. * testsuite/30_threads/thread/algorithm/1.cc: Likewise. * testsuite/30_threads/thread/algorithm/2.cc: Likewise. * testsuite/30_threads/thread/member/1.cc: Likewise. * testsuite/30_threads/thread/member/2.cc: Likewise. * testsuite/30_threads/thread/member/3.cc: Likewise. * testsuite/30_threads/thread/this_thread/1.cc: Likewise. * testsuite/30_threads/thread/this_thread/2.cc: Likewise. * testsuite/30_threads/thread/this_thread/3.cc: Likewise. * testsuite/30_threads/thread/this_thread/4.cc: Likewise. * testsuite/30_threads/headers/thread/types_std_c++0x.cc: Likewise. * testsuite/30_threads/headers/thread/std_c++0x_neg.cc: Likewise. * testsuite/17_intro/headers/c++200x/all.cc: Add thread. * testsuite/17_intro/headers/c++200x/all_multiple_inclusion.cc: Add thread, condition_variable and mutex. Co-Authored-By: Benjamin Kosnik <bkoz@redhat.com> From-SVN: r140332
2008-09-13 02:32:37 +02:00
native_handle()
{ return _M_data->_M_id._M_thread; }
thread: New. 2008-09-12 Chris Fairles <chris.fairles@gmail.com> Benjamin Kosnik <bkoz@redhat.com> * include/std/thread: New. * include/Makefile.am: Update. * include/Makefile.in: Regenerate. * src/thread.cc: New. * src/Makefile.am: Update. * src/Makefile.in: Regenerate. * acinclude.m4: Add check for nanosleep. * configure.ac: Call it. * configure: Regenerate. * config.h.in: Likewise. * config/abi/pre/gnu.ver: Add exports. * doc/doxygen/user.cfg.in: Add thread header. * testsuite/lib/libstdc++.exp (check_v3_target_nanosleep): Add. * testsuite/lib/dg-options.exp (dg-require-nanosleep): Add. * testsuite/30_threads/thread/cons/1.cc: New. * testsuite/30_threads/thread/cons/2.cc: Likewise. * testsuite/30_threads/thread/cons/3.cc: Likewise. * testsuite/30_threads/thread/cons/4.cc: Likewise. * testsuite/30_threads/thread/algorithm/1.cc: Likewise. * testsuite/30_threads/thread/algorithm/2.cc: Likewise. * testsuite/30_threads/thread/member/1.cc: Likewise. * testsuite/30_threads/thread/member/2.cc: Likewise. * testsuite/30_threads/thread/member/3.cc: Likewise. * testsuite/30_threads/thread/this_thread/1.cc: Likewise. * testsuite/30_threads/thread/this_thread/2.cc: Likewise. * testsuite/30_threads/thread/this_thread/3.cc: Likewise. * testsuite/30_threads/thread/this_thread/4.cc: Likewise. * testsuite/30_threads/headers/thread/types_std_c++0x.cc: Likewise. * testsuite/30_threads/headers/thread/std_c++0x_neg.cc: Likewise. * testsuite/17_intro/headers/c++200x/all.cc: Add thread. * testsuite/17_intro/headers/c++200x/all_multiple_inclusion.cc: Add thread, condition_variable and mutex. Co-Authored-By: Benjamin Kosnik <bkoz@redhat.com> From-SVN: r140332
2008-09-13 02:32:37 +02:00
// Returns a value that hints at the number of hardware thread contexts.
static unsigned int
hardware_concurrency()
{ return 0; }
thread: New. 2008-09-12 Chris Fairles <chris.fairles@gmail.com> Benjamin Kosnik <bkoz@redhat.com> * include/std/thread: New. * include/Makefile.am: Update. * include/Makefile.in: Regenerate. * src/thread.cc: New. * src/Makefile.am: Update. * src/Makefile.in: Regenerate. * acinclude.m4: Add check for nanosleep. * configure.ac: Call it. * configure: Regenerate. * config.h.in: Likewise. * config/abi/pre/gnu.ver: Add exports. * doc/doxygen/user.cfg.in: Add thread header. * testsuite/lib/libstdc++.exp (check_v3_target_nanosleep): Add. * testsuite/lib/dg-options.exp (dg-require-nanosleep): Add. * testsuite/30_threads/thread/cons/1.cc: New. * testsuite/30_threads/thread/cons/2.cc: Likewise. * testsuite/30_threads/thread/cons/3.cc: Likewise. * testsuite/30_threads/thread/cons/4.cc: Likewise. * testsuite/30_threads/thread/algorithm/1.cc: Likewise. * testsuite/30_threads/thread/algorithm/2.cc: Likewise. * testsuite/30_threads/thread/member/1.cc: Likewise. * testsuite/30_threads/thread/member/2.cc: Likewise. * testsuite/30_threads/thread/member/3.cc: Likewise. * testsuite/30_threads/thread/this_thread/1.cc: Likewise. * testsuite/30_threads/thread/this_thread/2.cc: Likewise. * testsuite/30_threads/thread/this_thread/3.cc: Likewise. * testsuite/30_threads/thread/this_thread/4.cc: Likewise. * testsuite/30_threads/headers/thread/types_std_c++0x.cc: Likewise. * testsuite/30_threads/headers/thread/std_c++0x_neg.cc: Likewise. * testsuite/17_intro/headers/c++200x/all.cc: Add thread. * testsuite/17_intro/headers/c++200x/all_multiple_inclusion.cc: Add thread, condition_variable and mutex. Co-Authored-By: Benjamin Kosnik <bkoz@redhat.com> From-SVN: r140332
2008-09-13 02:32:37 +02:00
private:
template<typename _Callable>
shared_ptr<_Impl<_Callable>>
_M_make_shared_data(_Callable&& __f)
{
// Create and allocate full data structure, not base.
return make_shared<_Impl<_Callable>>(std::forward<_Callable>(__f));
thread: New. 2008-09-12 Chris Fairles <chris.fairles@gmail.com> Benjamin Kosnik <bkoz@redhat.com> * include/std/thread: New. * include/Makefile.am: Update. * include/Makefile.in: Regenerate. * src/thread.cc: New. * src/Makefile.am: Update. * src/Makefile.in: Regenerate. * acinclude.m4: Add check for nanosleep. * configure.ac: Call it. * configure: Regenerate. * config.h.in: Likewise. * config/abi/pre/gnu.ver: Add exports. * doc/doxygen/user.cfg.in: Add thread header. * testsuite/lib/libstdc++.exp (check_v3_target_nanosleep): Add. * testsuite/lib/dg-options.exp (dg-require-nanosleep): Add. * testsuite/30_threads/thread/cons/1.cc: New. * testsuite/30_threads/thread/cons/2.cc: Likewise. * testsuite/30_threads/thread/cons/3.cc: Likewise. * testsuite/30_threads/thread/cons/4.cc: Likewise. * testsuite/30_threads/thread/algorithm/1.cc: Likewise. * testsuite/30_threads/thread/algorithm/2.cc: Likewise. * testsuite/30_threads/thread/member/1.cc: Likewise. * testsuite/30_threads/thread/member/2.cc: Likewise. * testsuite/30_threads/thread/member/3.cc: Likewise. * testsuite/30_threads/thread/this_thread/1.cc: Likewise. * testsuite/30_threads/thread/this_thread/2.cc: Likewise. * testsuite/30_threads/thread/this_thread/3.cc: Likewise. * testsuite/30_threads/thread/this_thread/4.cc: Likewise. * testsuite/30_threads/headers/thread/types_std_c++0x.cc: Likewise. * testsuite/30_threads/headers/thread/std_c++0x_neg.cc: Likewise. * testsuite/17_intro/headers/c++200x/all.cc: Add thread. * testsuite/17_intro/headers/c++200x/all_multiple_inclusion.cc: Add thread, condition_variable and mutex. Co-Authored-By: Benjamin Kosnik <bkoz@redhat.com> From-SVN: r140332
2008-09-13 02:32:37 +02:00
}
void _M_start_thread();
thread: New. 2008-09-12 Chris Fairles <chris.fairles@gmail.com> Benjamin Kosnik <bkoz@redhat.com> * include/std/thread: New. * include/Makefile.am: Update. * include/Makefile.in: Regenerate. * src/thread.cc: New. * src/Makefile.am: Update. * src/Makefile.in: Regenerate. * acinclude.m4: Add check for nanosleep. * configure.ac: Call it. * configure: Regenerate. * config.h.in: Likewise. * config/abi/pre/gnu.ver: Add exports. * doc/doxygen/user.cfg.in: Add thread header. * testsuite/lib/libstdc++.exp (check_v3_target_nanosleep): Add. * testsuite/lib/dg-options.exp (dg-require-nanosleep): Add. * testsuite/30_threads/thread/cons/1.cc: New. * testsuite/30_threads/thread/cons/2.cc: Likewise. * testsuite/30_threads/thread/cons/3.cc: Likewise. * testsuite/30_threads/thread/cons/4.cc: Likewise. * testsuite/30_threads/thread/algorithm/1.cc: Likewise. * testsuite/30_threads/thread/algorithm/2.cc: Likewise. * testsuite/30_threads/thread/member/1.cc: Likewise. * testsuite/30_threads/thread/member/2.cc: Likewise. * testsuite/30_threads/thread/member/3.cc: Likewise. * testsuite/30_threads/thread/this_thread/1.cc: Likewise. * testsuite/30_threads/thread/this_thread/2.cc: Likewise. * testsuite/30_threads/thread/this_thread/3.cc: Likewise. * testsuite/30_threads/thread/this_thread/4.cc: Likewise. * testsuite/30_threads/headers/thread/types_std_c++0x.cc: Likewise. * testsuite/30_threads/headers/thread/std_c++0x_neg.cc: Likewise. * testsuite/17_intro/headers/c++200x/all.cc: Add thread. * testsuite/17_intro/headers/c++200x/all_multiple_inclusion.cc: Add thread, condition_variable and mutex. Co-Authored-By: Benjamin Kosnik <bkoz@redhat.com> From-SVN: r140332
2008-09-13 02:32:37 +02:00
};
inline void
swap(thread& __x, thread& __y)
{ __x.swap(__y); }
inline void
swap(thread&& __x, thread& __y)
{ __x.swap(__y); }
thread: New. 2008-09-12 Chris Fairles <chris.fairles@gmail.com> Benjamin Kosnik <bkoz@redhat.com> * include/std/thread: New. * include/Makefile.am: Update. * include/Makefile.in: Regenerate. * src/thread.cc: New. * src/Makefile.am: Update. * src/Makefile.in: Regenerate. * acinclude.m4: Add check for nanosleep. * configure.ac: Call it. * configure: Regenerate. * config.h.in: Likewise. * config/abi/pre/gnu.ver: Add exports. * doc/doxygen/user.cfg.in: Add thread header. * testsuite/lib/libstdc++.exp (check_v3_target_nanosleep): Add. * testsuite/lib/dg-options.exp (dg-require-nanosleep): Add. * testsuite/30_threads/thread/cons/1.cc: New. * testsuite/30_threads/thread/cons/2.cc: Likewise. * testsuite/30_threads/thread/cons/3.cc: Likewise. * testsuite/30_threads/thread/cons/4.cc: Likewise. * testsuite/30_threads/thread/algorithm/1.cc: Likewise. * testsuite/30_threads/thread/algorithm/2.cc: Likewise. * testsuite/30_threads/thread/member/1.cc: Likewise. * testsuite/30_threads/thread/member/2.cc: Likewise. * testsuite/30_threads/thread/member/3.cc: Likewise. * testsuite/30_threads/thread/this_thread/1.cc: Likewise. * testsuite/30_threads/thread/this_thread/2.cc: Likewise. * testsuite/30_threads/thread/this_thread/3.cc: Likewise. * testsuite/30_threads/thread/this_thread/4.cc: Likewise. * testsuite/30_threads/headers/thread/types_std_c++0x.cc: Likewise. * testsuite/30_threads/headers/thread/std_c++0x_neg.cc: Likewise. * testsuite/17_intro/headers/c++200x/all.cc: Add thread. * testsuite/17_intro/headers/c++200x/all_multiple_inclusion.cc: Add thread, condition_variable and mutex. Co-Authored-By: Benjamin Kosnik <bkoz@redhat.com> From-SVN: r140332
2008-09-13 02:32:37 +02:00
inline void
swap(thread& __x, thread&& __y)
{ __x.swap(__y); }
inline bool
operator!=(thread::id __x, thread::id __y)
{ return !(__x == __y); }
inline bool
operator<=(thread::id __x, thread::id __y)
{ return !(__y < __x); }
inline bool
operator>(thread::id __x, thread::id __y)
{ return __y < __x; }
inline bool
operator>=(thread::id __x, thread::id __y)
{ return !(__x < __y); }
template<class _CharT, class _Traits>
inline basic_ostream<_CharT, _Traits>&
operator<<(basic_ostream<_CharT, _Traits>&& __out, thread::id __id)
{
if (__id == thread::id())
return __out << "thread::id of a non-executing thread";
else
return __out << __id._M_thread;
}
// 30.2.2 Namespace this_thread.
thread: New. 2008-09-12 Chris Fairles <chris.fairles@gmail.com> Benjamin Kosnik <bkoz@redhat.com> * include/std/thread: New. * include/Makefile.am: Update. * include/Makefile.in: Regenerate. * src/thread.cc: New. * src/Makefile.am: Update. * src/Makefile.in: Regenerate. * acinclude.m4: Add check for nanosleep. * configure.ac: Call it. * configure: Regenerate. * config.h.in: Likewise. * config/abi/pre/gnu.ver: Add exports. * doc/doxygen/user.cfg.in: Add thread header. * testsuite/lib/libstdc++.exp (check_v3_target_nanosleep): Add. * testsuite/lib/dg-options.exp (dg-require-nanosleep): Add. * testsuite/30_threads/thread/cons/1.cc: New. * testsuite/30_threads/thread/cons/2.cc: Likewise. * testsuite/30_threads/thread/cons/3.cc: Likewise. * testsuite/30_threads/thread/cons/4.cc: Likewise. * testsuite/30_threads/thread/algorithm/1.cc: Likewise. * testsuite/30_threads/thread/algorithm/2.cc: Likewise. * testsuite/30_threads/thread/member/1.cc: Likewise. * testsuite/30_threads/thread/member/2.cc: Likewise. * testsuite/30_threads/thread/member/3.cc: Likewise. * testsuite/30_threads/thread/this_thread/1.cc: Likewise. * testsuite/30_threads/thread/this_thread/2.cc: Likewise. * testsuite/30_threads/thread/this_thread/3.cc: Likewise. * testsuite/30_threads/thread/this_thread/4.cc: Likewise. * testsuite/30_threads/headers/thread/types_std_c++0x.cc: Likewise. * testsuite/30_threads/headers/thread/std_c++0x_neg.cc: Likewise. * testsuite/17_intro/headers/c++200x/all.cc: Add thread. * testsuite/17_intro/headers/c++200x/all_multiple_inclusion.cc: Add thread, condition_variable and mutex. Co-Authored-By: Benjamin Kosnik <bkoz@redhat.com> From-SVN: r140332
2008-09-13 02:32:37 +02:00
namespace this_thread
{
thread::id
get_id() { return thread::id(__gthread_self()); }
thread: New. 2008-09-12 Chris Fairles <chris.fairles@gmail.com> Benjamin Kosnik <bkoz@redhat.com> * include/std/thread: New. * include/Makefile.am: Update. * include/Makefile.in: Regenerate. * src/thread.cc: New. * src/Makefile.am: Update. * src/Makefile.in: Regenerate. * acinclude.m4: Add check for nanosleep. * configure.ac: Call it. * configure: Regenerate. * config.h.in: Likewise. * config/abi/pre/gnu.ver: Add exports. * doc/doxygen/user.cfg.in: Add thread header. * testsuite/lib/libstdc++.exp (check_v3_target_nanosleep): Add. * testsuite/lib/dg-options.exp (dg-require-nanosleep): Add. * testsuite/30_threads/thread/cons/1.cc: New. * testsuite/30_threads/thread/cons/2.cc: Likewise. * testsuite/30_threads/thread/cons/3.cc: Likewise. * testsuite/30_threads/thread/cons/4.cc: Likewise. * testsuite/30_threads/thread/algorithm/1.cc: Likewise. * testsuite/30_threads/thread/algorithm/2.cc: Likewise. * testsuite/30_threads/thread/member/1.cc: Likewise. * testsuite/30_threads/thread/member/2.cc: Likewise. * testsuite/30_threads/thread/member/3.cc: Likewise. * testsuite/30_threads/thread/this_thread/1.cc: Likewise. * testsuite/30_threads/thread/this_thread/2.cc: Likewise. * testsuite/30_threads/thread/this_thread/3.cc: Likewise. * testsuite/30_threads/thread/this_thread/4.cc: Likewise. * testsuite/30_threads/headers/thread/types_std_c++0x.cc: Likewise. * testsuite/30_threads/headers/thread/std_c++0x_neg.cc: Likewise. * testsuite/17_intro/headers/c++200x/all.cc: Add thread. * testsuite/17_intro/headers/c++200x/all_multiple_inclusion.cc: Add thread, condition_variable and mutex. Co-Authored-By: Benjamin Kosnik <bkoz@redhat.com> From-SVN: r140332
2008-09-13 02:32:37 +02:00
#ifdef _GLIBCXX_USE_SCHED_YIELD
inline void
yield()
{ __gthread_yield(); }
#endif
thread: New. 2008-09-12 Chris Fairles <chris.fairles@gmail.com> Benjamin Kosnik <bkoz@redhat.com> * include/std/thread: New. * include/Makefile.am: Update. * include/Makefile.in: Regenerate. * src/thread.cc: New. * src/Makefile.am: Update. * src/Makefile.in: Regenerate. * acinclude.m4: Add check for nanosleep. * configure.ac: Call it. * configure: Regenerate. * config.h.in: Likewise. * config/abi/pre/gnu.ver: Add exports. * doc/doxygen/user.cfg.in: Add thread header. * testsuite/lib/libstdc++.exp (check_v3_target_nanosleep): Add. * testsuite/lib/dg-options.exp (dg-require-nanosleep): Add. * testsuite/30_threads/thread/cons/1.cc: New. * testsuite/30_threads/thread/cons/2.cc: Likewise. * testsuite/30_threads/thread/cons/3.cc: Likewise. * testsuite/30_threads/thread/cons/4.cc: Likewise. * testsuite/30_threads/thread/algorithm/1.cc: Likewise. * testsuite/30_threads/thread/algorithm/2.cc: Likewise. * testsuite/30_threads/thread/member/1.cc: Likewise. * testsuite/30_threads/thread/member/2.cc: Likewise. * testsuite/30_threads/thread/member/3.cc: Likewise. * testsuite/30_threads/thread/this_thread/1.cc: Likewise. * testsuite/30_threads/thread/this_thread/2.cc: Likewise. * testsuite/30_threads/thread/this_thread/3.cc: Likewise. * testsuite/30_threads/thread/this_thread/4.cc: Likewise. * testsuite/30_threads/headers/thread/types_std_c++0x.cc: Likewise. * testsuite/30_threads/headers/thread/std_c++0x_neg.cc: Likewise. * testsuite/17_intro/headers/c++200x/all.cc: Add thread. * testsuite/17_intro/headers/c++200x/all_multiple_inclusion.cc: Add thread, condition_variable and mutex. Co-Authored-By: Benjamin Kosnik <bkoz@redhat.com> From-SVN: r140332
2008-09-13 02:32:37 +02:00
#ifdef _GLIBCXX_USE_NANOSLEEP
thread: New. 2008-09-12 Chris Fairles <chris.fairles@gmail.com> Benjamin Kosnik <bkoz@redhat.com> * include/std/thread: New. * include/Makefile.am: Update. * include/Makefile.in: Regenerate. * src/thread.cc: New. * src/Makefile.am: Update. * src/Makefile.in: Regenerate. * acinclude.m4: Add check for nanosleep. * configure.ac: Call it. * configure: Regenerate. * config.h.in: Likewise. * config/abi/pre/gnu.ver: Add exports. * doc/doxygen/user.cfg.in: Add thread header. * testsuite/lib/libstdc++.exp (check_v3_target_nanosleep): Add. * testsuite/lib/dg-options.exp (dg-require-nanosleep): Add. * testsuite/30_threads/thread/cons/1.cc: New. * testsuite/30_threads/thread/cons/2.cc: Likewise. * testsuite/30_threads/thread/cons/3.cc: Likewise. * testsuite/30_threads/thread/cons/4.cc: Likewise. * testsuite/30_threads/thread/algorithm/1.cc: Likewise. * testsuite/30_threads/thread/algorithm/2.cc: Likewise. * testsuite/30_threads/thread/member/1.cc: Likewise. * testsuite/30_threads/thread/member/2.cc: Likewise. * testsuite/30_threads/thread/member/3.cc: Likewise. * testsuite/30_threads/thread/this_thread/1.cc: Likewise. * testsuite/30_threads/thread/this_thread/2.cc: Likewise. * testsuite/30_threads/thread/this_thread/3.cc: Likewise. * testsuite/30_threads/thread/this_thread/4.cc: Likewise. * testsuite/30_threads/headers/thread/types_std_c++0x.cc: Likewise. * testsuite/30_threads/headers/thread/std_c++0x_neg.cc: Likewise. * testsuite/17_intro/headers/c++200x/all.cc: Add thread. * testsuite/17_intro/headers/c++200x/all_multiple_inclusion.cc: Add thread, condition_variable and mutex. Co-Authored-By: Benjamin Kosnik <bkoz@redhat.com> From-SVN: r140332
2008-09-13 02:32:37 +02:00
template<typename _Clock, typename _Duration>
inline void
thread: New. 2008-09-12 Chris Fairles <chris.fairles@gmail.com> Benjamin Kosnik <bkoz@redhat.com> * include/std/thread: New. * include/Makefile.am: Update. * include/Makefile.in: Regenerate. * src/thread.cc: New. * src/Makefile.am: Update. * src/Makefile.in: Regenerate. * acinclude.m4: Add check for nanosleep. * configure.ac: Call it. * configure: Regenerate. * config.h.in: Likewise. * config/abi/pre/gnu.ver: Add exports. * doc/doxygen/user.cfg.in: Add thread header. * testsuite/lib/libstdc++.exp (check_v3_target_nanosleep): Add. * testsuite/lib/dg-options.exp (dg-require-nanosleep): Add. * testsuite/30_threads/thread/cons/1.cc: New. * testsuite/30_threads/thread/cons/2.cc: Likewise. * testsuite/30_threads/thread/cons/3.cc: Likewise. * testsuite/30_threads/thread/cons/4.cc: Likewise. * testsuite/30_threads/thread/algorithm/1.cc: Likewise. * testsuite/30_threads/thread/algorithm/2.cc: Likewise. * testsuite/30_threads/thread/member/1.cc: Likewise. * testsuite/30_threads/thread/member/2.cc: Likewise. * testsuite/30_threads/thread/member/3.cc: Likewise. * testsuite/30_threads/thread/this_thread/1.cc: Likewise. * testsuite/30_threads/thread/this_thread/2.cc: Likewise. * testsuite/30_threads/thread/this_thread/3.cc: Likewise. * testsuite/30_threads/thread/this_thread/4.cc: Likewise. * testsuite/30_threads/headers/thread/types_std_c++0x.cc: Likewise. * testsuite/30_threads/headers/thread/std_c++0x_neg.cc: Likewise. * testsuite/17_intro/headers/c++200x/all.cc: Add thread. * testsuite/17_intro/headers/c++200x/all_multiple_inclusion.cc: Add thread, condition_variable and mutex. Co-Authored-By: Benjamin Kosnik <bkoz@redhat.com> From-SVN: r140332
2008-09-13 02:32:37 +02:00
sleep_until(const chrono::time_point<_Clock, _Duration>& __atime)
{ sleep_for(__atime - _Clock::now()); }
thread: New. 2008-09-12 Chris Fairles <chris.fairles@gmail.com> Benjamin Kosnik <bkoz@redhat.com> * include/std/thread: New. * include/Makefile.am: Update. * include/Makefile.in: Regenerate. * src/thread.cc: New. * src/Makefile.am: Update. * src/Makefile.in: Regenerate. * acinclude.m4: Add check for nanosleep. * configure.ac: Call it. * configure: Regenerate. * config.h.in: Likewise. * config/abi/pre/gnu.ver: Add exports. * doc/doxygen/user.cfg.in: Add thread header. * testsuite/lib/libstdc++.exp (check_v3_target_nanosleep): Add. * testsuite/lib/dg-options.exp (dg-require-nanosleep): Add. * testsuite/30_threads/thread/cons/1.cc: New. * testsuite/30_threads/thread/cons/2.cc: Likewise. * testsuite/30_threads/thread/cons/3.cc: Likewise. * testsuite/30_threads/thread/cons/4.cc: Likewise. * testsuite/30_threads/thread/algorithm/1.cc: Likewise. * testsuite/30_threads/thread/algorithm/2.cc: Likewise. * testsuite/30_threads/thread/member/1.cc: Likewise. * testsuite/30_threads/thread/member/2.cc: Likewise. * testsuite/30_threads/thread/member/3.cc: Likewise. * testsuite/30_threads/thread/this_thread/1.cc: Likewise. * testsuite/30_threads/thread/this_thread/2.cc: Likewise. * testsuite/30_threads/thread/this_thread/3.cc: Likewise. * testsuite/30_threads/thread/this_thread/4.cc: Likewise. * testsuite/30_threads/headers/thread/types_std_c++0x.cc: Likewise. * testsuite/30_threads/headers/thread/std_c++0x_neg.cc: Likewise. * testsuite/17_intro/headers/c++200x/all.cc: Add thread. * testsuite/17_intro/headers/c++200x/all_multiple_inclusion.cc: Add thread, condition_variable and mutex. Co-Authored-By: Benjamin Kosnik <bkoz@redhat.com> From-SVN: r140332
2008-09-13 02:32:37 +02:00
template<typename _Rep, typename _Period>
inline void
thread: New. 2008-09-12 Chris Fairles <chris.fairles@gmail.com> Benjamin Kosnik <bkoz@redhat.com> * include/std/thread: New. * include/Makefile.am: Update. * include/Makefile.in: Regenerate. * src/thread.cc: New. * src/Makefile.am: Update. * src/Makefile.in: Regenerate. * acinclude.m4: Add check for nanosleep. * configure.ac: Call it. * configure: Regenerate. * config.h.in: Likewise. * config/abi/pre/gnu.ver: Add exports. * doc/doxygen/user.cfg.in: Add thread header. * testsuite/lib/libstdc++.exp (check_v3_target_nanosleep): Add. * testsuite/lib/dg-options.exp (dg-require-nanosleep): Add. * testsuite/30_threads/thread/cons/1.cc: New. * testsuite/30_threads/thread/cons/2.cc: Likewise. * testsuite/30_threads/thread/cons/3.cc: Likewise. * testsuite/30_threads/thread/cons/4.cc: Likewise. * testsuite/30_threads/thread/algorithm/1.cc: Likewise. * testsuite/30_threads/thread/algorithm/2.cc: Likewise. * testsuite/30_threads/thread/member/1.cc: Likewise. * testsuite/30_threads/thread/member/2.cc: Likewise. * testsuite/30_threads/thread/member/3.cc: Likewise. * testsuite/30_threads/thread/this_thread/1.cc: Likewise. * testsuite/30_threads/thread/this_thread/2.cc: Likewise. * testsuite/30_threads/thread/this_thread/3.cc: Likewise. * testsuite/30_threads/thread/this_thread/4.cc: Likewise. * testsuite/30_threads/headers/thread/types_std_c++0x.cc: Likewise. * testsuite/30_threads/headers/thread/std_c++0x_neg.cc: Likewise. * testsuite/17_intro/headers/c++200x/all.cc: Add thread. * testsuite/17_intro/headers/c++200x/all_multiple_inclusion.cc: Add thread, condition_variable and mutex. Co-Authored-By: Benjamin Kosnik <bkoz@redhat.com> From-SVN: r140332
2008-09-13 02:32:37 +02:00
sleep_for(const chrono::duration<_Rep, _Period>& __rtime)
{
chrono::seconds __s =
chrono::duration_cast<chrono::seconds>(__rtime);
chrono::nanoseconds __ns =
chrono::duration_cast<chrono::nanoseconds>(__rtime - __s);
__gthread_time_t __ts =
thread: New. 2008-09-12 Chris Fairles <chris.fairles@gmail.com> Benjamin Kosnik <bkoz@redhat.com> * include/std/thread: New. * include/Makefile.am: Update. * include/Makefile.in: Regenerate. * src/thread.cc: New. * src/Makefile.am: Update. * src/Makefile.in: Regenerate. * acinclude.m4: Add check for nanosleep. * configure.ac: Call it. * configure: Regenerate. * config.h.in: Likewise. * config/abi/pre/gnu.ver: Add exports. * doc/doxygen/user.cfg.in: Add thread header. * testsuite/lib/libstdc++.exp (check_v3_target_nanosleep): Add. * testsuite/lib/dg-options.exp (dg-require-nanosleep): Add. * testsuite/30_threads/thread/cons/1.cc: New. * testsuite/30_threads/thread/cons/2.cc: Likewise. * testsuite/30_threads/thread/cons/3.cc: Likewise. * testsuite/30_threads/thread/cons/4.cc: Likewise. * testsuite/30_threads/thread/algorithm/1.cc: Likewise. * testsuite/30_threads/thread/algorithm/2.cc: Likewise. * testsuite/30_threads/thread/member/1.cc: Likewise. * testsuite/30_threads/thread/member/2.cc: Likewise. * testsuite/30_threads/thread/member/3.cc: Likewise. * testsuite/30_threads/thread/this_thread/1.cc: Likewise. * testsuite/30_threads/thread/this_thread/2.cc: Likewise. * testsuite/30_threads/thread/this_thread/3.cc: Likewise. * testsuite/30_threads/thread/this_thread/4.cc: Likewise. * testsuite/30_threads/headers/thread/types_std_c++0x.cc: Likewise. * testsuite/30_threads/headers/thread/std_c++0x_neg.cc: Likewise. * testsuite/17_intro/headers/c++200x/all.cc: Add thread. * testsuite/17_intro/headers/c++200x/all_multiple_inclusion.cc: Add thread, condition_variable and mutex. Co-Authored-By: Benjamin Kosnik <bkoz@redhat.com> From-SVN: r140332
2008-09-13 02:32:37 +02:00
{
static_cast<std::time_t>(__s.count()),
static_cast<long>(__ns.count())
};
::nanosleep(&__ts, 0);
}
#endif
thread: New. 2008-09-12 Chris Fairles <chris.fairles@gmail.com> Benjamin Kosnik <bkoz@redhat.com> * include/std/thread: New. * include/Makefile.am: Update. * include/Makefile.in: Regenerate. * src/thread.cc: New. * src/Makefile.am: Update. * src/Makefile.in: Regenerate. * acinclude.m4: Add check for nanosleep. * configure.ac: Call it. * configure: Regenerate. * config.h.in: Likewise. * config/abi/pre/gnu.ver: Add exports. * doc/doxygen/user.cfg.in: Add thread header. * testsuite/lib/libstdc++.exp (check_v3_target_nanosleep): Add. * testsuite/lib/dg-options.exp (dg-require-nanosleep): Add. * testsuite/30_threads/thread/cons/1.cc: New. * testsuite/30_threads/thread/cons/2.cc: Likewise. * testsuite/30_threads/thread/cons/3.cc: Likewise. * testsuite/30_threads/thread/cons/4.cc: Likewise. * testsuite/30_threads/thread/algorithm/1.cc: Likewise. * testsuite/30_threads/thread/algorithm/2.cc: Likewise. * testsuite/30_threads/thread/member/1.cc: Likewise. * testsuite/30_threads/thread/member/2.cc: Likewise. * testsuite/30_threads/thread/member/3.cc: Likewise. * testsuite/30_threads/thread/this_thread/1.cc: Likewise. * testsuite/30_threads/thread/this_thread/2.cc: Likewise. * testsuite/30_threads/thread/this_thread/3.cc: Likewise. * testsuite/30_threads/thread/this_thread/4.cc: Likewise. * testsuite/30_threads/headers/thread/types_std_c++0x.cc: Likewise. * testsuite/30_threads/headers/thread/std_c++0x_neg.cc: Likewise. * testsuite/17_intro/headers/c++200x/all.cc: Add thread. * testsuite/17_intro/headers/c++200x/all_multiple_inclusion.cc: Add thread, condition_variable and mutex. Co-Authored-By: Benjamin Kosnik <bkoz@redhat.com> From-SVN: r140332
2008-09-13 02:32:37 +02:00
}
}
#endif // _GLIBCXX_HAS_GTHREADS && _GLIBCXX_USE_C99_STDINT_TR1
#endif // __GXX_EXPERIMENTAL_CXX0X__
#endif // _GLIBCXX_THREAD