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

839 lines
21 KiB
Plaintext
Raw Normal View History

condition_variable: New. 2008-05-06 Benjamin Kosnik <bkoz@redhat.com> * include/std/condition_variable: New. * include/std/mutex: New. * src/condition_variable.cc: New. * src/mutex.cc: New. * include/bits/functexcept.h: Add __throw_system_error varients. * src/functexcept.cc: Same. * config/abi/pre/gnu.ver: Add exports. * doc/xml/manual/using.xml: Add new includes. * doc/doxygen/user.cfg.in: Doxygen support. * doc/doxygen/doxygroups.cc: Same. * include/Makefile.am: Add mutex, condition_variable. * include/Makefile.in: Regenerated. * src/Makefile.am: Add mutex.cc, condition_variable.cc. * src/Makefile.in: Regenerated. * testsuite/30_threads: New. * testsuite/30_threads/lock_error: New. * testsuite/30_threads/mutex: New. * testsuite/30_threads/mutex/dest: New. * testsuite/30_threads/mutex/dest/destructor_locked.cc: New. * testsuite/30_threads/mutex/native_handle: New. * testsuite/30_threads/mutex/native_handle/1.cc: New. * testsuite/30_threads/mutex/cons: New. * testsuite/30_threads/mutex/cons/assign_neg.cc: New. * testsuite/30_threads/mutex/cons/1.cc: New. * testsuite/30_threads/mutex/cons/copy_neg.cc: New. * testsuite/30_threads/mutex/requirements: New. * testsuite/30_threads/mutex/requirements/typedefs.cc: New. * testsuite/30_threads/mutex/try_lock: New. * testsuite/30_threads/mutex/try_lock/1.cc: New. * testsuite/30_threads/mutex/try_lock/2.cc: New. * testsuite/30_threads/mutex/lock: New. * testsuite/30_threads/mutex/lock/1.cc: New. * testsuite/30_threads/mutex/unlock: New. * testsuite/30_threads/mutex/unlock/1.cc: New. * testsuite/30_threads/recursive_mutex: New. * testsuite/30_threads/recursive_mutex/dest: New. * testsuite/30_threads/recursive_mutex/dest/destructor_locked.cc: New. * testsuite/30_threads/recursive_mutex/native_handle: New. * testsuite/30_threads/recursive_mutex/native_handle/1.cc: New. * testsuite/30_threads/recursive_mutex/cons: New. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: New. * testsuite/30_threads/recursive_mutex/cons/1.cc: New. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: New. * testsuite/30_threads/recursive_mutex/requirements: New. * testsuite/30_threads/recursive_mutex/requirements/typedefs.cc: New. * testsuite/30_threads/lock_guard: New. * testsuite/30_threads/lock_guard/requirements: New. * testsuite/30_threads/lock_guard/requirements/typedefs.cc: New. * testsuite/30_threads/lock_guard/requirements/ explicit_instantiation.cc: New. * testsuite/30_threads/headers: New. * testsuite/30_threads/headers/mutex: New. * testsuite/30_threads/headers/mutex/types_std_c++0x.cc: New. * testsuite/30_threads/headers/mutex/std_c++0x_neg.cc: New. * testsuite/30_threads/headers/condition_variable: New. * testsuite/30_threads/headers/condition_variable/ types_std_c++0x.cc: New. * testsuite/30_threads/headers/condition_variable/std_c++0x_neg.cc: New. * testsuite/30_threads/once_flag: New. * testsuite/30_threads/unique_lock: New. * testsuite/30_threads/unique_lock/requirements: New. * testsuite/30_threads/unique_lock/requirements/typedefs.cc: New. * testsuite/30_threads/unique_lock/requirements/ explicit_instantiation.cc: New. * testsuite/17_intro/headers/c++200x/all.cc: Add new includes. From-SVN: r135007
2008-05-06 23:11:47 +02:00
// <mutex> -*- C++ -*-
// Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
condition_variable: New. 2008-05-06 Benjamin Kosnik <bkoz@redhat.com> * include/std/condition_variable: New. * include/std/mutex: New. * src/condition_variable.cc: New. * src/mutex.cc: New. * include/bits/functexcept.h: Add __throw_system_error varients. * src/functexcept.cc: Same. * config/abi/pre/gnu.ver: Add exports. * doc/xml/manual/using.xml: Add new includes. * doc/doxygen/user.cfg.in: Doxygen support. * doc/doxygen/doxygroups.cc: Same. * include/Makefile.am: Add mutex, condition_variable. * include/Makefile.in: Regenerated. * src/Makefile.am: Add mutex.cc, condition_variable.cc. * src/Makefile.in: Regenerated. * testsuite/30_threads: New. * testsuite/30_threads/lock_error: New. * testsuite/30_threads/mutex: New. * testsuite/30_threads/mutex/dest: New. * testsuite/30_threads/mutex/dest/destructor_locked.cc: New. * testsuite/30_threads/mutex/native_handle: New. * testsuite/30_threads/mutex/native_handle/1.cc: New. * testsuite/30_threads/mutex/cons: New. * testsuite/30_threads/mutex/cons/assign_neg.cc: New. * testsuite/30_threads/mutex/cons/1.cc: New. * testsuite/30_threads/mutex/cons/copy_neg.cc: New. * testsuite/30_threads/mutex/requirements: New. * testsuite/30_threads/mutex/requirements/typedefs.cc: New. * testsuite/30_threads/mutex/try_lock: New. * testsuite/30_threads/mutex/try_lock/1.cc: New. * testsuite/30_threads/mutex/try_lock/2.cc: New. * testsuite/30_threads/mutex/lock: New. * testsuite/30_threads/mutex/lock/1.cc: New. * testsuite/30_threads/mutex/unlock: New. * testsuite/30_threads/mutex/unlock/1.cc: New. * testsuite/30_threads/recursive_mutex: New. * testsuite/30_threads/recursive_mutex/dest: New. * testsuite/30_threads/recursive_mutex/dest/destructor_locked.cc: New. * testsuite/30_threads/recursive_mutex/native_handle: New. * testsuite/30_threads/recursive_mutex/native_handle/1.cc: New. * testsuite/30_threads/recursive_mutex/cons: New. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: New. * testsuite/30_threads/recursive_mutex/cons/1.cc: New. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: New. * testsuite/30_threads/recursive_mutex/requirements: New. * testsuite/30_threads/recursive_mutex/requirements/typedefs.cc: New. * testsuite/30_threads/lock_guard: New. * testsuite/30_threads/lock_guard/requirements: New. * testsuite/30_threads/lock_guard/requirements/typedefs.cc: New. * testsuite/30_threads/lock_guard/requirements/ explicit_instantiation.cc: New. * testsuite/30_threads/headers: New. * testsuite/30_threads/headers/mutex: New. * testsuite/30_threads/headers/mutex/types_std_c++0x.cc: New. * testsuite/30_threads/headers/mutex/std_c++0x_neg.cc: New. * testsuite/30_threads/headers/condition_variable: New. * testsuite/30_threads/headers/condition_variable/ types_std_c++0x.cc: New. * testsuite/30_threads/headers/condition_variable/std_c++0x_neg.cc: New. * testsuite/30_threads/once_flag: New. * testsuite/30_threads/unique_lock: New. * testsuite/30_threads/unique_lock/requirements: New. * testsuite/30_threads/unique_lock/requirements/typedefs.cc: New. * testsuite/30_threads/unique_lock/requirements/ explicit_instantiation.cc: New. * testsuite/17_intro/headers/c++200x/all.cc: Add new includes. From-SVN: r135007
2008-05-06 23:11:47 +02:00
// Free Software Foundation, Inc.
//
// 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 3, or (at your option)
condition_variable: New. 2008-05-06 Benjamin Kosnik <bkoz@redhat.com> * include/std/condition_variable: New. * include/std/mutex: New. * src/condition_variable.cc: New. * src/mutex.cc: New. * include/bits/functexcept.h: Add __throw_system_error varients. * src/functexcept.cc: Same. * config/abi/pre/gnu.ver: Add exports. * doc/xml/manual/using.xml: Add new includes. * doc/doxygen/user.cfg.in: Doxygen support. * doc/doxygen/doxygroups.cc: Same. * include/Makefile.am: Add mutex, condition_variable. * include/Makefile.in: Regenerated. * src/Makefile.am: Add mutex.cc, condition_variable.cc. * src/Makefile.in: Regenerated. * testsuite/30_threads: New. * testsuite/30_threads/lock_error: New. * testsuite/30_threads/mutex: New. * testsuite/30_threads/mutex/dest: New. * testsuite/30_threads/mutex/dest/destructor_locked.cc: New. * testsuite/30_threads/mutex/native_handle: New. * testsuite/30_threads/mutex/native_handle/1.cc: New. * testsuite/30_threads/mutex/cons: New. * testsuite/30_threads/mutex/cons/assign_neg.cc: New. * testsuite/30_threads/mutex/cons/1.cc: New. * testsuite/30_threads/mutex/cons/copy_neg.cc: New. * testsuite/30_threads/mutex/requirements: New. * testsuite/30_threads/mutex/requirements/typedefs.cc: New. * testsuite/30_threads/mutex/try_lock: New. * testsuite/30_threads/mutex/try_lock/1.cc: New. * testsuite/30_threads/mutex/try_lock/2.cc: New. * testsuite/30_threads/mutex/lock: New. * testsuite/30_threads/mutex/lock/1.cc: New. * testsuite/30_threads/mutex/unlock: New. * testsuite/30_threads/mutex/unlock/1.cc: New. * testsuite/30_threads/recursive_mutex: New. * testsuite/30_threads/recursive_mutex/dest: New. * testsuite/30_threads/recursive_mutex/dest/destructor_locked.cc: New. * testsuite/30_threads/recursive_mutex/native_handle: New. * testsuite/30_threads/recursive_mutex/native_handle/1.cc: New. * testsuite/30_threads/recursive_mutex/cons: New. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: New. * testsuite/30_threads/recursive_mutex/cons/1.cc: New. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: New. * testsuite/30_threads/recursive_mutex/requirements: New. * testsuite/30_threads/recursive_mutex/requirements/typedefs.cc: New. * testsuite/30_threads/lock_guard: New. * testsuite/30_threads/lock_guard/requirements: New. * testsuite/30_threads/lock_guard/requirements/typedefs.cc: New. * testsuite/30_threads/lock_guard/requirements/ explicit_instantiation.cc: New. * testsuite/30_threads/headers: New. * testsuite/30_threads/headers/mutex: New. * testsuite/30_threads/headers/mutex/types_std_c++0x.cc: New. * testsuite/30_threads/headers/mutex/std_c++0x_neg.cc: New. * testsuite/30_threads/headers/condition_variable: New. * testsuite/30_threads/headers/condition_variable/ types_std_c++0x.cc: New. * testsuite/30_threads/headers/condition_variable/std_c++0x_neg.cc: New. * testsuite/30_threads/once_flag: New. * testsuite/30_threads/unique_lock: New. * testsuite/30_threads/unique_lock/requirements: New. * testsuite/30_threads/unique_lock/requirements/typedefs.cc: New. * testsuite/30_threads/unique_lock/requirements/ explicit_instantiation.cc: New. * testsuite/17_intro/headers/c++200x/all.cc: Add new includes. From-SVN: r135007
2008-05-06 23:11:47 +02:00
// 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.
// Under Section 7 of GPL version 3, you are granted additional
// permissions described in the GCC Runtime Library Exception, version
// 3.1, as published by the Free Software Foundation.
condition_variable: New. 2008-05-06 Benjamin Kosnik <bkoz@redhat.com> * include/std/condition_variable: New. * include/std/mutex: New. * src/condition_variable.cc: New. * src/mutex.cc: New. * include/bits/functexcept.h: Add __throw_system_error varients. * src/functexcept.cc: Same. * config/abi/pre/gnu.ver: Add exports. * doc/xml/manual/using.xml: Add new includes. * doc/doxygen/user.cfg.in: Doxygen support. * doc/doxygen/doxygroups.cc: Same. * include/Makefile.am: Add mutex, condition_variable. * include/Makefile.in: Regenerated. * src/Makefile.am: Add mutex.cc, condition_variable.cc. * src/Makefile.in: Regenerated. * testsuite/30_threads: New. * testsuite/30_threads/lock_error: New. * testsuite/30_threads/mutex: New. * testsuite/30_threads/mutex/dest: New. * testsuite/30_threads/mutex/dest/destructor_locked.cc: New. * testsuite/30_threads/mutex/native_handle: New. * testsuite/30_threads/mutex/native_handle/1.cc: New. * testsuite/30_threads/mutex/cons: New. * testsuite/30_threads/mutex/cons/assign_neg.cc: New. * testsuite/30_threads/mutex/cons/1.cc: New. * testsuite/30_threads/mutex/cons/copy_neg.cc: New. * testsuite/30_threads/mutex/requirements: New. * testsuite/30_threads/mutex/requirements/typedefs.cc: New. * testsuite/30_threads/mutex/try_lock: New. * testsuite/30_threads/mutex/try_lock/1.cc: New. * testsuite/30_threads/mutex/try_lock/2.cc: New. * testsuite/30_threads/mutex/lock: New. * testsuite/30_threads/mutex/lock/1.cc: New. * testsuite/30_threads/mutex/unlock: New. * testsuite/30_threads/mutex/unlock/1.cc: New. * testsuite/30_threads/recursive_mutex: New. * testsuite/30_threads/recursive_mutex/dest: New. * testsuite/30_threads/recursive_mutex/dest/destructor_locked.cc: New. * testsuite/30_threads/recursive_mutex/native_handle: New. * testsuite/30_threads/recursive_mutex/native_handle/1.cc: New. * testsuite/30_threads/recursive_mutex/cons: New. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: New. * testsuite/30_threads/recursive_mutex/cons/1.cc: New. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: New. * testsuite/30_threads/recursive_mutex/requirements: New. * testsuite/30_threads/recursive_mutex/requirements/typedefs.cc: New. * testsuite/30_threads/lock_guard: New. * testsuite/30_threads/lock_guard/requirements: New. * testsuite/30_threads/lock_guard/requirements/typedefs.cc: New. * testsuite/30_threads/lock_guard/requirements/ explicit_instantiation.cc: New. * testsuite/30_threads/headers: New. * testsuite/30_threads/headers/mutex: New. * testsuite/30_threads/headers/mutex/types_std_c++0x.cc: New. * testsuite/30_threads/headers/mutex/std_c++0x_neg.cc: New. * testsuite/30_threads/headers/condition_variable: New. * testsuite/30_threads/headers/condition_variable/ types_std_c++0x.cc: New. * testsuite/30_threads/headers/condition_variable/std_c++0x_neg.cc: New. * testsuite/30_threads/once_flag: New. * testsuite/30_threads/unique_lock: New. * testsuite/30_threads/unique_lock/requirements: New. * testsuite/30_threads/unique_lock/requirements/typedefs.cc: New. * testsuite/30_threads/unique_lock/requirements/ explicit_instantiation.cc: New. * testsuite/17_intro/headers/c++200x/all.cc: Add new includes. From-SVN: r135007
2008-05-06 23:11:47 +02:00
// You should have received a copy of the GNU General Public License and
// a copy of the GCC Runtime Library Exception along with this program;
// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
// <http://www.gnu.org/licenses/>.
condition_variable: New. 2008-05-06 Benjamin Kosnik <bkoz@redhat.com> * include/std/condition_variable: New. * include/std/mutex: New. * src/condition_variable.cc: New. * src/mutex.cc: New. * include/bits/functexcept.h: Add __throw_system_error varients. * src/functexcept.cc: Same. * config/abi/pre/gnu.ver: Add exports. * doc/xml/manual/using.xml: Add new includes. * doc/doxygen/user.cfg.in: Doxygen support. * doc/doxygen/doxygroups.cc: Same. * include/Makefile.am: Add mutex, condition_variable. * include/Makefile.in: Regenerated. * src/Makefile.am: Add mutex.cc, condition_variable.cc. * src/Makefile.in: Regenerated. * testsuite/30_threads: New. * testsuite/30_threads/lock_error: New. * testsuite/30_threads/mutex: New. * testsuite/30_threads/mutex/dest: New. * testsuite/30_threads/mutex/dest/destructor_locked.cc: New. * testsuite/30_threads/mutex/native_handle: New. * testsuite/30_threads/mutex/native_handle/1.cc: New. * testsuite/30_threads/mutex/cons: New. * testsuite/30_threads/mutex/cons/assign_neg.cc: New. * testsuite/30_threads/mutex/cons/1.cc: New. * testsuite/30_threads/mutex/cons/copy_neg.cc: New. * testsuite/30_threads/mutex/requirements: New. * testsuite/30_threads/mutex/requirements/typedefs.cc: New. * testsuite/30_threads/mutex/try_lock: New. * testsuite/30_threads/mutex/try_lock/1.cc: New. * testsuite/30_threads/mutex/try_lock/2.cc: New. * testsuite/30_threads/mutex/lock: New. * testsuite/30_threads/mutex/lock/1.cc: New. * testsuite/30_threads/mutex/unlock: New. * testsuite/30_threads/mutex/unlock/1.cc: New. * testsuite/30_threads/recursive_mutex: New. * testsuite/30_threads/recursive_mutex/dest: New. * testsuite/30_threads/recursive_mutex/dest/destructor_locked.cc: New. * testsuite/30_threads/recursive_mutex/native_handle: New. * testsuite/30_threads/recursive_mutex/native_handle/1.cc: New. * testsuite/30_threads/recursive_mutex/cons: New. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: New. * testsuite/30_threads/recursive_mutex/cons/1.cc: New. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: New. * testsuite/30_threads/recursive_mutex/requirements: New. * testsuite/30_threads/recursive_mutex/requirements/typedefs.cc: New. * testsuite/30_threads/lock_guard: New. * testsuite/30_threads/lock_guard/requirements: New. * testsuite/30_threads/lock_guard/requirements/typedefs.cc: New. * testsuite/30_threads/lock_guard/requirements/ explicit_instantiation.cc: New. * testsuite/30_threads/headers: New. * testsuite/30_threads/headers/mutex: New. * testsuite/30_threads/headers/mutex/types_std_c++0x.cc: New. * testsuite/30_threads/headers/mutex/std_c++0x_neg.cc: New. * testsuite/30_threads/headers/condition_variable: New. * testsuite/30_threads/headers/condition_variable/ types_std_c++0x.cc: New. * testsuite/30_threads/headers/condition_variable/std_c++0x_neg.cc: New. * testsuite/30_threads/once_flag: New. * testsuite/30_threads/unique_lock: New. * testsuite/30_threads/unique_lock/requirements: New. * testsuite/30_threads/unique_lock/requirements/typedefs.cc: New. * testsuite/30_threads/unique_lock/requirements/ explicit_instantiation.cc: New. * testsuite/17_intro/headers/c++200x/all.cc: Add new includes. From-SVN: r135007
2008-05-06 23:11:47 +02:00
/** @file include/mutex
condition_variable: New. 2008-05-06 Benjamin Kosnik <bkoz@redhat.com> * include/std/condition_variable: New. * include/std/mutex: New. * src/condition_variable.cc: New. * src/mutex.cc: New. * include/bits/functexcept.h: Add __throw_system_error varients. * src/functexcept.cc: Same. * config/abi/pre/gnu.ver: Add exports. * doc/xml/manual/using.xml: Add new includes. * doc/doxygen/user.cfg.in: Doxygen support. * doc/doxygen/doxygroups.cc: Same. * include/Makefile.am: Add mutex, condition_variable. * include/Makefile.in: Regenerated. * src/Makefile.am: Add mutex.cc, condition_variable.cc. * src/Makefile.in: Regenerated. * testsuite/30_threads: New. * testsuite/30_threads/lock_error: New. * testsuite/30_threads/mutex: New. * testsuite/30_threads/mutex/dest: New. * testsuite/30_threads/mutex/dest/destructor_locked.cc: New. * testsuite/30_threads/mutex/native_handle: New. * testsuite/30_threads/mutex/native_handle/1.cc: New. * testsuite/30_threads/mutex/cons: New. * testsuite/30_threads/mutex/cons/assign_neg.cc: New. * testsuite/30_threads/mutex/cons/1.cc: New. * testsuite/30_threads/mutex/cons/copy_neg.cc: New. * testsuite/30_threads/mutex/requirements: New. * testsuite/30_threads/mutex/requirements/typedefs.cc: New. * testsuite/30_threads/mutex/try_lock: New. * testsuite/30_threads/mutex/try_lock/1.cc: New. * testsuite/30_threads/mutex/try_lock/2.cc: New. * testsuite/30_threads/mutex/lock: New. * testsuite/30_threads/mutex/lock/1.cc: New. * testsuite/30_threads/mutex/unlock: New. * testsuite/30_threads/mutex/unlock/1.cc: New. * testsuite/30_threads/recursive_mutex: New. * testsuite/30_threads/recursive_mutex/dest: New. * testsuite/30_threads/recursive_mutex/dest/destructor_locked.cc: New. * testsuite/30_threads/recursive_mutex/native_handle: New. * testsuite/30_threads/recursive_mutex/native_handle/1.cc: New. * testsuite/30_threads/recursive_mutex/cons: New. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: New. * testsuite/30_threads/recursive_mutex/cons/1.cc: New. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: New. * testsuite/30_threads/recursive_mutex/requirements: New. * testsuite/30_threads/recursive_mutex/requirements/typedefs.cc: New. * testsuite/30_threads/lock_guard: New. * testsuite/30_threads/lock_guard/requirements: New. * testsuite/30_threads/lock_guard/requirements/typedefs.cc: New. * testsuite/30_threads/lock_guard/requirements/ explicit_instantiation.cc: New. * testsuite/30_threads/headers: New. * testsuite/30_threads/headers/mutex: New. * testsuite/30_threads/headers/mutex/types_std_c++0x.cc: New. * testsuite/30_threads/headers/mutex/std_c++0x_neg.cc: New. * testsuite/30_threads/headers/condition_variable: New. * testsuite/30_threads/headers/condition_variable/ types_std_c++0x.cc: New. * testsuite/30_threads/headers/condition_variable/std_c++0x_neg.cc: New. * testsuite/30_threads/once_flag: New. * testsuite/30_threads/unique_lock: New. * testsuite/30_threads/unique_lock/requirements: New. * testsuite/30_threads/unique_lock/requirements/typedefs.cc: New. * testsuite/30_threads/unique_lock/requirements/ explicit_instantiation.cc: New. * testsuite/17_intro/headers/c++200x/all.cc: Add new includes. From-SVN: r135007
2008-05-06 23:11:47 +02:00
* This is a Standard C++ Library header.
*/
#ifndef _GLIBCXX_MUTEX
#define _GLIBCXX_MUTEX 1
#pragma GCC system_header
#ifndef __GXX_EXPERIMENTAL_CXX0X__
hashtable.h: Fold in include/tr1_impl/hashtable.h contents. 2010-02-10 Paolo Carlini <paolo.carlini@oracle.com> * include/tr1/hashtable.h: Fold in include/tr1_impl/hashtable.h contents. * include/tr1_impl/hashtable.h: Remove. * include/tr1_impl/hashtable_policy.h: Move and rename... * include/tr1/hashtable_policy.h: ... here. * include/tr1_impl/unordered_map: Move and rename... * include/tr1/unordered_map.h: ... here. * include/tr1_impl/unordered_set: Move and rename... * include/tr1/unordered_set.h: ... here. * include/tr1_impl/unordered_map: Move and rename... * include/tr1/unordered_map.h: ... here. * include/tr1/unordered_map: Adjust. * include/tr1/unordered_set: Likewise. * include/Makefile.am: Adjust. * include/Makefile.in: Regenerate. * include/std/c++0x_warning.h: Move... * include/bits/c++0x_warning.h: ... here. * include/debug/unordered_map: Adjust. * include/debug/unordered_set: Likewise. * include/std/tuple: Likewise. * include/std/system_error: Likewise. * include/std/forward_list: Likewise. * include/std/thread: Likewise. * include/std/type_traits: Likewise. * include/std/future: Likewise. * include/std/regex: Likewise. * include/std/atomic: Likewise. * include/std/ratio: Likewise. * include/std/random: Likewise. * include/std/unordered_map: Likewise. * include/std/chrono: Likewise.: Likewise. * include/std/condition_variable: Likewise. * include/std/mutex: Likewise. * include/std/unordered_set: Likewise. * include/std/array: Likewise. * include/profile/unordered_map: Likewise. * include/profile/unordered_set: Likewise. * include/c_global/cinttypes: Likewise. * include/c_global/ctgmath: Likewise. * include/c_global/cfenv: Likewise. * include/c_global/cstdint: Likewise. * include/c_global/cstdbool: Likewise. * include/c_global/ccomplex: Likewise. * include/bits/shared_ptr.h: Do not include <bits/c++0x_warning.h> at all, the file is not meant to be included by the users. * include/bits/functional_hash.h: Likewise. * include/bits/unique_ptr.h: Likewise. * include/bits/forward_list.h: Likewise. * testsuite/29_atomics/atomic/cons/assign_neg.cc: Adjust dg-* line numbers. * testsuite/29_atomics/atomic/cons/copy_neg.cc: Likewise. * testsuite/23_containers/forward_list/requirements/dr438/ assign_neg.cc: Likewise. * testsuite/23_containers/forward_list/requirements/dr438/ insert_neg.cc: Likewise. * testsuite/23_containers/forward_list/requirements/dr438/ constructor_1_neg.cc: Likewise. * testsuite/23_containers/forward_list/requirements/dr438/ constructor_2_neg.cc: Likewise. * testsuite/20_util/unique_ptr/modifiers/reset_neg.cc: Likewise. * testsuite/20_util/unique_ptr/assign/assign_neg.cc: Likewise. From-SVN: r156667
2010-02-10 20:14:33 +01:00
# include <bits/c++0x_warning.h>
#else
condition_variable: New. 2008-05-06 Benjamin Kosnik <bkoz@redhat.com> * include/std/condition_variable: New. * include/std/mutex: New. * src/condition_variable.cc: New. * src/mutex.cc: New. * include/bits/functexcept.h: Add __throw_system_error varients. * src/functexcept.cc: Same. * config/abi/pre/gnu.ver: Add exports. * doc/xml/manual/using.xml: Add new includes. * doc/doxygen/user.cfg.in: Doxygen support. * doc/doxygen/doxygroups.cc: Same. * include/Makefile.am: Add mutex, condition_variable. * include/Makefile.in: Regenerated. * src/Makefile.am: Add mutex.cc, condition_variable.cc. * src/Makefile.in: Regenerated. * testsuite/30_threads: New. * testsuite/30_threads/lock_error: New. * testsuite/30_threads/mutex: New. * testsuite/30_threads/mutex/dest: New. * testsuite/30_threads/mutex/dest/destructor_locked.cc: New. * testsuite/30_threads/mutex/native_handle: New. * testsuite/30_threads/mutex/native_handle/1.cc: New. * testsuite/30_threads/mutex/cons: New. * testsuite/30_threads/mutex/cons/assign_neg.cc: New. * testsuite/30_threads/mutex/cons/1.cc: New. * testsuite/30_threads/mutex/cons/copy_neg.cc: New. * testsuite/30_threads/mutex/requirements: New. * testsuite/30_threads/mutex/requirements/typedefs.cc: New. * testsuite/30_threads/mutex/try_lock: New. * testsuite/30_threads/mutex/try_lock/1.cc: New. * testsuite/30_threads/mutex/try_lock/2.cc: New. * testsuite/30_threads/mutex/lock: New. * testsuite/30_threads/mutex/lock/1.cc: New. * testsuite/30_threads/mutex/unlock: New. * testsuite/30_threads/mutex/unlock/1.cc: New. * testsuite/30_threads/recursive_mutex: New. * testsuite/30_threads/recursive_mutex/dest: New. * testsuite/30_threads/recursive_mutex/dest/destructor_locked.cc: New. * testsuite/30_threads/recursive_mutex/native_handle: New. * testsuite/30_threads/recursive_mutex/native_handle/1.cc: New. * testsuite/30_threads/recursive_mutex/cons: New. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: New. * testsuite/30_threads/recursive_mutex/cons/1.cc: New. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: New. * testsuite/30_threads/recursive_mutex/requirements: New. * testsuite/30_threads/recursive_mutex/requirements/typedefs.cc: New. * testsuite/30_threads/lock_guard: New. * testsuite/30_threads/lock_guard/requirements: New. * testsuite/30_threads/lock_guard/requirements/typedefs.cc: New. * testsuite/30_threads/lock_guard/requirements/ explicit_instantiation.cc: New. * testsuite/30_threads/headers: New. * testsuite/30_threads/headers/mutex: New. * testsuite/30_threads/headers/mutex/types_std_c++0x.cc: New. * testsuite/30_threads/headers/mutex/std_c++0x_neg.cc: New. * testsuite/30_threads/headers/condition_variable: New. * testsuite/30_threads/headers/condition_variable/ types_std_c++0x.cc: New. * testsuite/30_threads/headers/condition_variable/std_c++0x_neg.cc: New. * testsuite/30_threads/once_flag: New. * testsuite/30_threads/unique_lock: New. * testsuite/30_threads/unique_lock/requirements: New. * testsuite/30_threads/unique_lock/requirements/typedefs.cc: New. * testsuite/30_threads/unique_lock/requirements/ explicit_instantiation.cc: New. * testsuite/17_intro/headers/c++200x/all.cc: Add new includes. From-SVN: r135007
2008-05-06 23:11:47 +02:00
#include <tuple>
condition_variable: Use new deleted ctors. 2008-09-03 Chris Fairles <chris.fairles@gmail.com> * include/std/condition_variable: Use new deleted ctors. * include/std/mutex: Likewise plus implement timed_mutex, recursive_timed_mutex and call_once. * src/condition_variable.cc: Implement wait(). Use gthread types. Remove _GTHREADS_HAS_COND checks in favor of global _GLIBCXX_HAS_GTHREADS. * src/mutex.cc (call_once): Implementation using TLS with mutex fallback. * config/abi/pre/gnu.ver: Add exported symbols. * testsuite/lib/libstdc++.exp (check_v3_target_gthreads): New. * testsuite/lib/dg-options.exp (dg-require-gthreads): Likewise. * testsuite/30_threads/lock_guard/requirements/typedefs.cc: Use dg-require-gthreads and dg-require-cstdint. * testsuite/30_threads/lock_guard/requirements/ explicit_instantiation.cc: Likewise. * testsuite/30_threads/mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/mutex/cons/1.cc: Likewise. * testsuite/30_threads/mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/mutex/lock/1.cc: Likewise. * testsuite/30_threads/mutex/unlock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/recursive_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/recursive_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/recursive_mutex/lock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/unique_lock/requirements/ explicit_instantiation.cc: Likewise. * testsuite/30_threads/unique_lock/requirements/typedefs.cc: Likewise. * testsuite/30_threads/mutex/cons/assign_neg.cc: Also adjust dg-error lines for deleted members. * testsuite/30_threads/mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/call_once/once_flag.cc: New. * testsuite/30_threads/call_once/call_once1.cc: Likewise. * testsuite/30_threads/condition_variable/cons/1.cc: Likewise. * testsuite/30_threads/condition_variable/cons/copy_neg.cc: Likewise * testsuite/30_threads/condition_variable/cons/assign_neg.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/1.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/copy_neg.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/assign_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/timed_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_until/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_until/2.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/1.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/timed_mutex/lock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/2.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/3.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_until/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_until/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/lock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/lock/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/3.cc: Likewise. * testsuite/30_threads/unique_lock/modifiers/1.cc: Likewise. * testsuite/30_threads/unique_lock/modifiers/2.cc: Likewise. * testsuite/30_threads/unique_lock/cons/1.cc: Likewise. * testsuite/30_threads/unique_lock/cons/2.cc: Likewise. * testsuite/30_threads/unique_lock/cons/3.cc: Likewise. * testsuite/30_threads/unique_lock/cons/4.cc: Likewise. * testsuite/30_threads/unique_lock/cons/5.cc: Likewise. * testsuite/30_threads/unique_lock/cons/6.cc: Likewise. * testsuite/30_threads/unique_lock/locking/1.cc: Likewise. * testsuite/30_threads/unique_lock/locking/2.cc: Likewise. * testsuite/30_threads/unique_lock/locking/3.cc: Likewise. * testsuite/30_threads/unique_lock/locking/4.cc: Likewise. From-SVN: r139943
2008-09-03 19:46:09 +02:00
#include <chrono>
#include <exception>
#include <type_traits>
#include <functional>
#include <system_error>
condition_variable: New. 2008-05-06 Benjamin Kosnik <bkoz@redhat.com> * include/std/condition_variable: New. * include/std/mutex: New. * src/condition_variable.cc: New. * src/mutex.cc: New. * include/bits/functexcept.h: Add __throw_system_error varients. * src/functexcept.cc: Same. * config/abi/pre/gnu.ver: Add exports. * doc/xml/manual/using.xml: Add new includes. * doc/doxygen/user.cfg.in: Doxygen support. * doc/doxygen/doxygroups.cc: Same. * include/Makefile.am: Add mutex, condition_variable. * include/Makefile.in: Regenerated. * src/Makefile.am: Add mutex.cc, condition_variable.cc. * src/Makefile.in: Regenerated. * testsuite/30_threads: New. * testsuite/30_threads/lock_error: New. * testsuite/30_threads/mutex: New. * testsuite/30_threads/mutex/dest: New. * testsuite/30_threads/mutex/dest/destructor_locked.cc: New. * testsuite/30_threads/mutex/native_handle: New. * testsuite/30_threads/mutex/native_handle/1.cc: New. * testsuite/30_threads/mutex/cons: New. * testsuite/30_threads/mutex/cons/assign_neg.cc: New. * testsuite/30_threads/mutex/cons/1.cc: New. * testsuite/30_threads/mutex/cons/copy_neg.cc: New. * testsuite/30_threads/mutex/requirements: New. * testsuite/30_threads/mutex/requirements/typedefs.cc: New. * testsuite/30_threads/mutex/try_lock: New. * testsuite/30_threads/mutex/try_lock/1.cc: New. * testsuite/30_threads/mutex/try_lock/2.cc: New. * testsuite/30_threads/mutex/lock: New. * testsuite/30_threads/mutex/lock/1.cc: New. * testsuite/30_threads/mutex/unlock: New. * testsuite/30_threads/mutex/unlock/1.cc: New. * testsuite/30_threads/recursive_mutex: New. * testsuite/30_threads/recursive_mutex/dest: New. * testsuite/30_threads/recursive_mutex/dest/destructor_locked.cc: New. * testsuite/30_threads/recursive_mutex/native_handle: New. * testsuite/30_threads/recursive_mutex/native_handle/1.cc: New. * testsuite/30_threads/recursive_mutex/cons: New. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: New. * testsuite/30_threads/recursive_mutex/cons/1.cc: New. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: New. * testsuite/30_threads/recursive_mutex/requirements: New. * testsuite/30_threads/recursive_mutex/requirements/typedefs.cc: New. * testsuite/30_threads/lock_guard: New. * testsuite/30_threads/lock_guard/requirements: New. * testsuite/30_threads/lock_guard/requirements/typedefs.cc: New. * testsuite/30_threads/lock_guard/requirements/ explicit_instantiation.cc: New. * testsuite/30_threads/headers: New. * testsuite/30_threads/headers/mutex: New. * testsuite/30_threads/headers/mutex/types_std_c++0x.cc: New. * testsuite/30_threads/headers/mutex/std_c++0x_neg.cc: New. * testsuite/30_threads/headers/condition_variable: New. * testsuite/30_threads/headers/condition_variable/ types_std_c++0x.cc: New. * testsuite/30_threads/headers/condition_variable/std_c++0x_neg.cc: New. * testsuite/30_threads/once_flag: New. * testsuite/30_threads/unique_lock: New. * testsuite/30_threads/unique_lock/requirements: New. * testsuite/30_threads/unique_lock/requirements/typedefs.cc: New. * testsuite/30_threads/unique_lock/requirements/ explicit_instantiation.cc: New. * testsuite/17_intro/headers/c++200x/all.cc: Add new includes. From-SVN: r135007
2008-05-06 23:11:47 +02:00
#include <bits/functexcept.h>
#include <bits/gthr.h>
condition_variable: Use new deleted ctors. 2008-09-03 Chris Fairles <chris.fairles@gmail.com> * include/std/condition_variable: Use new deleted ctors. * include/std/mutex: Likewise plus implement timed_mutex, recursive_timed_mutex and call_once. * src/condition_variable.cc: Implement wait(). Use gthread types. Remove _GTHREADS_HAS_COND checks in favor of global _GLIBCXX_HAS_GTHREADS. * src/mutex.cc (call_once): Implementation using TLS with mutex fallback. * config/abi/pre/gnu.ver: Add exported symbols. * testsuite/lib/libstdc++.exp (check_v3_target_gthreads): New. * testsuite/lib/dg-options.exp (dg-require-gthreads): Likewise. * testsuite/30_threads/lock_guard/requirements/typedefs.cc: Use dg-require-gthreads and dg-require-cstdint. * testsuite/30_threads/lock_guard/requirements/ explicit_instantiation.cc: Likewise. * testsuite/30_threads/mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/mutex/cons/1.cc: Likewise. * testsuite/30_threads/mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/mutex/lock/1.cc: Likewise. * testsuite/30_threads/mutex/unlock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/recursive_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/recursive_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/recursive_mutex/lock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/unique_lock/requirements/ explicit_instantiation.cc: Likewise. * testsuite/30_threads/unique_lock/requirements/typedefs.cc: Likewise. * testsuite/30_threads/mutex/cons/assign_neg.cc: Also adjust dg-error lines for deleted members. * testsuite/30_threads/mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/call_once/once_flag.cc: New. * testsuite/30_threads/call_once/call_once1.cc: Likewise. * testsuite/30_threads/condition_variable/cons/1.cc: Likewise. * testsuite/30_threads/condition_variable/cons/copy_neg.cc: Likewise * testsuite/30_threads/condition_variable/cons/assign_neg.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/1.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/copy_neg.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/assign_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/timed_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_until/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_until/2.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/1.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/timed_mutex/lock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/2.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/3.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_until/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_until/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/lock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/lock/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/3.cc: Likewise. * testsuite/30_threads/unique_lock/modifiers/1.cc: Likewise. * testsuite/30_threads/unique_lock/modifiers/2.cc: Likewise. * testsuite/30_threads/unique_lock/cons/1.cc: Likewise. * testsuite/30_threads/unique_lock/cons/2.cc: Likewise. * testsuite/30_threads/unique_lock/cons/3.cc: Likewise. * testsuite/30_threads/unique_lock/cons/4.cc: Likewise. * testsuite/30_threads/unique_lock/cons/5.cc: Likewise. * testsuite/30_threads/unique_lock/cons/6.cc: Likewise. * testsuite/30_threads/unique_lock/locking/1.cc: Likewise. * testsuite/30_threads/unique_lock/locking/2.cc: Likewise. * testsuite/30_threads/unique_lock/locking/3.cc: Likewise. * testsuite/30_threads/unique_lock/locking/4.cc: Likewise. From-SVN: r139943
2008-09-03 19:46:09 +02:00
#include <bits/move.h> // for std::swap
#if defined(_GLIBCXX_HAS_GTHREADS) && defined(_GLIBCXX_USE_C99_STDINT_TR1)
condition_variable: New. 2008-05-06 Benjamin Kosnik <bkoz@redhat.com> * include/std/condition_variable: New. * include/std/mutex: New. * src/condition_variable.cc: New. * src/mutex.cc: New. * include/bits/functexcept.h: Add __throw_system_error varients. * src/functexcept.cc: Same. * config/abi/pre/gnu.ver: Add exports. * doc/xml/manual/using.xml: Add new includes. * doc/doxygen/user.cfg.in: Doxygen support. * doc/doxygen/doxygroups.cc: Same. * include/Makefile.am: Add mutex, condition_variable. * include/Makefile.in: Regenerated. * src/Makefile.am: Add mutex.cc, condition_variable.cc. * src/Makefile.in: Regenerated. * testsuite/30_threads: New. * testsuite/30_threads/lock_error: New. * testsuite/30_threads/mutex: New. * testsuite/30_threads/mutex/dest: New. * testsuite/30_threads/mutex/dest/destructor_locked.cc: New. * testsuite/30_threads/mutex/native_handle: New. * testsuite/30_threads/mutex/native_handle/1.cc: New. * testsuite/30_threads/mutex/cons: New. * testsuite/30_threads/mutex/cons/assign_neg.cc: New. * testsuite/30_threads/mutex/cons/1.cc: New. * testsuite/30_threads/mutex/cons/copy_neg.cc: New. * testsuite/30_threads/mutex/requirements: New. * testsuite/30_threads/mutex/requirements/typedefs.cc: New. * testsuite/30_threads/mutex/try_lock: New. * testsuite/30_threads/mutex/try_lock/1.cc: New. * testsuite/30_threads/mutex/try_lock/2.cc: New. * testsuite/30_threads/mutex/lock: New. * testsuite/30_threads/mutex/lock/1.cc: New. * testsuite/30_threads/mutex/unlock: New. * testsuite/30_threads/mutex/unlock/1.cc: New. * testsuite/30_threads/recursive_mutex: New. * testsuite/30_threads/recursive_mutex/dest: New. * testsuite/30_threads/recursive_mutex/dest/destructor_locked.cc: New. * testsuite/30_threads/recursive_mutex/native_handle: New. * testsuite/30_threads/recursive_mutex/native_handle/1.cc: New. * testsuite/30_threads/recursive_mutex/cons: New. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: New. * testsuite/30_threads/recursive_mutex/cons/1.cc: New. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: New. * testsuite/30_threads/recursive_mutex/requirements: New. * testsuite/30_threads/recursive_mutex/requirements/typedefs.cc: New. * testsuite/30_threads/lock_guard: New. * testsuite/30_threads/lock_guard/requirements: New. * testsuite/30_threads/lock_guard/requirements/typedefs.cc: New. * testsuite/30_threads/lock_guard/requirements/ explicit_instantiation.cc: New. * testsuite/30_threads/headers: New. * testsuite/30_threads/headers/mutex: New. * testsuite/30_threads/headers/mutex/types_std_c++0x.cc: New. * testsuite/30_threads/headers/mutex/std_c++0x_neg.cc: New. * testsuite/30_threads/headers/condition_variable: New. * testsuite/30_threads/headers/condition_variable/ types_std_c++0x.cc: New. * testsuite/30_threads/headers/condition_variable/std_c++0x_neg.cc: New. * testsuite/30_threads/once_flag: New. * testsuite/30_threads/unique_lock: New. * testsuite/30_threads/unique_lock/requirements: New. * testsuite/30_threads/unique_lock/requirements/typedefs.cc: New. * testsuite/30_threads/unique_lock/requirements/ explicit_instantiation.cc: New. * testsuite/17_intro/headers/c++200x/all.cc: Add new includes. From-SVN: r135007
2008-05-06 23:11:47 +02:00
PR libstdc++/36104 part four 2011-01-30 Benjamin Kosnik <bkoz@redhat.com> PR libstdc++/36104 part four * include/bits/c++config (_GLIBCXX_STD): Remove. (_GLIBCXX_STD_D, _GLIBCXX_PR): Now _GLIBCXX_STD_C. (_GLIBCXX_P): Now _GLIBCXX_STD_A. (_GLIBCXX_NAMESPACE_DEBUG, _GLIBCXX_NAMESPACE_PARALLEL, _GLIBCXX_NAMESPACE_PROFILE, _GLIBCXX_NAMESPACE_VERSION): Remove. (_GLIBCXX_INLINE_DEBUG, _GLIBCXX_INLINE_PARALLEL, _GLIBCXX_INLINE_PROFILE): Remove. (_GLIBCXX_BEGIN_NAMESPACE(X)): Remove. (_GLIBCXX_END_NAMESPACE): Remove. (_GLIBCXX_BEGIN_NESTED_NAMESPACE(X, Y)): Remove. (_GLIBCXX_END_NESTED_NAMESPACE): Remove. (_GLIBCXX_BEGIN_NAMESPACE_ALGO): Add. (_GLIBCXX_END_NAMESPACE_ALGO): Add. (_GLIBCXX_BEGIN_NAMESPACE_CONTAINER): Add. (_GLIBCXX_END_NAMESPACE_CONTAINER): Add. (_GLIBCXX_BEGIN_NAMESPACE_VERSION): Add. (_GLIBCXX_END_NAMESPACE_VERSION): Add. (_GLIBCXX_BEGIN_LDBL_NAMESPACE): To _GLIBCXX_BEGIN_NAMESPACE_LDBL. (_GLIBCXX_END_LDBL_NAMESPACE): To _GLIBCXX_END_NAMESPACE_LDBL. (_GLIBCXX_VISIBILITY_ATTR): Revert to _GLIBCXX_VISIBILITY. * include/*: Use new macros for namespace scope. * config/*: Same. * src/*: Same. * src/Makefile.am (sources): Remove debug_list.cc, add compatibility-debug_list-2.cc. (parallel_sources): Remove parallel_list.cc, add compatibility-parallel_list-2.cc. (compatibility-parallel_list-2.[o,lo]): New rule. * src/Makefile.in: Regenerate. * src/debug_list.cc: Remove. * src/parallel_list.cc: Remove. * src/compatibility-list-2.cc: New. * src/compatibility-debug_list-2.cc: New. * src/compatibility-parallel_list-2.cc: New. * doc/doxygen/user.cfg.in: Adjust macros. * testsuite/20_util/auto_ptr/assign_neg.cc: Adjust line numbers, macros. * testsuite/20_util/declval/requirements/1_neg.cc: Same. * testsuite/20_util/duration/requirements/typedefs_neg1.cc: Same. * testsuite/20_util/duration/requirements/typedefs_neg2.cc: Same. * testsuite/20_util/duration/requirements/typedefs_neg3.cc: Same. * testsuite/20_util/forward/c_neg.cc: Same. * testsuite/20_util/forward/f_neg.cc: Same. * testsuite/20_util/make_signed/requirements/typedefs_neg.cc: Same. * testsuite/20_util/make_unsigned/requirements/typedefs_neg.cc: Same. * testsuite/20_util/ratio/cons/cons_overflow_neg.cc: Same. * testsuite/20_util/ratio/operations/ops_overflow_neg.cc: Same. * testsuite/20_util/shared_ptr/cons/43820_neg.cc: Same. * testsuite/20_util/weak_ptr/comparison/cmp_neg.cc: Same. * testsuite/23_containers/deque/requirements/dr438/assign_neg.cc: Same. * testsuite/23_containers/deque/requirements/dr438/ constructor_1_neg.cc: Same. * testsuite/23_containers/deque/requirements/dr438/ constructor_2_neg.cc: Same. * testsuite/23_containers/deque/requirements/dr438/insert_neg.cc: Same. * testsuite/23_containers/forward_list/capacity/1.cc: Same. * testsuite/23_containers/forward_list/requirements/dr438/ assign_neg.cc: Same. * testsuite/23_containers/forward_list/requirements/dr438/ constructor_1_neg.cc: Same. * testsuite/23_containers/forward_list/requirements/dr438/ constructor_2_neg.cc: Same. * testsuite/23_containers/forward_list/requirements/dr438/ insert_neg.cc: Same. * testsuite/23_containers/list/capacity/29134.cc: Same. * testsuite/23_containers/list/requirements/dr438/assign_neg.cc: Same. * testsuite/23_containers/list/requirements/dr438/ constructor_1_neg.cc: Same. * testsuite/23_containers/list/requirements/dr438/ constructor_2_neg.cc: Same. * testsuite/23_containers/list/requirements/dr438/insert_neg.cc: Same. * testsuite/23_containers/vector/bool/capacity/29134.cc: Same. * testsuite/23_containers/vector/bool/modifiers/insert/31370.cc: Same. * testsuite/23_containers/vector/requirements/dr438/assign_neg.cc: Same. * testsuite/23_containers/vector/requirements/dr438/ constructor_1_neg.cc: Same. * testsuite/23_containers/vector/requirements/dr438/ constructor_2_neg.cc: Same. * testsuite/23_containers/vector/requirements/dr438/insert_neg.cc: Same. * testsuite/25_algorithms/sort/35588.cc: Same. * testsuite/27_io/ios_base/cons/assign_neg.cc: Same. * testsuite/27_io/ios_base/cons/copy_neg.cc: Same. * testsuite/ext/profile/mutex_extensions_neg.cc: Same. * testsuite/ext/profile/profiler_algos.cc: Same. * testsuite/ext/type_traits/add_unsigned_floating_neg.cc: Same. * testsuite/ext/type_traits/add_unsigned_integer_neg.cc: Same. * testsuite/ext/type_traits/remove_unsigned_floating_neg.cc: Same. * testsuite/ext/type_traits/remove_unsigned_integer_neg.cc: Same. * testsuite/tr1/2_general_utilities/shared_ptr/cons/43820_neg.cc: Same. From-SVN: r169421
2011-01-30 23:39:36 +01:00
namespace std _GLIBCXX_VISIBILITY(default)
{
_GLIBCXX_BEGIN_NAMESPACE_VERSION
cinttypes: Remove, move contents to C++0x and TR1 headers. 2010-11-02 Paolo Carlini <paolo.carlini@oracle.com> * include/tr1_impl/cinttypes: Remove, move contents to C++0x and TR1 headers. * include/tr1_impl/cstdlib: Likewise. * include/tr1_impl/cstdio: Likewise. * include/tr1_impl/cctype: Likewise. * include/tr1_impl/boost_sp_counted_base.h: Likewise. * include/tr1_impl/cmath: Likewise. * include/tr1_impl/cfenv: Likewise. * include/tr1_impl/utility: Likewise. * include/tr1_impl/complex: Likewise. * include/tr1_impl/cwchar: Likewise. * include/tr1_impl/type_traits: Likewise. * include/tr1_impl/cstdint: Likewise. * include/tr1_impl/regex: Likewise. * include/tr1_impl/array: Likewise. * include/tr1_impl/cwctype: Likewise. * include/Makefile.am: Adjust. * include/Makefile.in: Regenerate. * src/condition_variable.cc: Adjust; consistently use _GLIBCXX_BEGIN_NAMESPACE and _GLIBCXX_END_NAMESPACE. * src/mutex.cc: Likewise. * src/future.cc: Likewise. * src/atomic.cc: Likewise. * src/chrono.cc: Likewise. * src/thread.cc: Likewise. * include/std/tuple: Likewise. * include/std/utility: Likewise. * include/std/thread: Likewise.: Likewise. * include/std/type_traits: Likewise. * include/std/memory: Likewise. * include/std/future: Likewise. * include/std/ratio: Likewise. * include/std/chrono: Likewise. * include/std/condition_variable: Likewise. * include/std/mutex: Likewise. * include/std/functional: Likewise. * include/std/complex: Likewise. * include/std/typeindex: Likewise. * include/std/array: Likewise. * include/bits/regex_compiler.h: Likewise. * include/bits/regex_grep_matcher.tcc: Likewise. * include/bits/regex_grep_matcher.h: Likewise. * include/bits/regex_constants.h: Likewise. * include/bits/regex_cursor.h: Likewise. * include/bits/regex_nfa.tcc: Likewise. * include/bits/shared_ptr_base.h: Likewise. * include/bits/regex_nfa.h: Likewise. * include/bits/random.tcc: Likewise. * include/bits/regex.h: Likewise. * include/bits/random.h: Likewise. * include/bits/regex_error.h: Likewise. * include/c_global/cinttypes: Likewise. * include/c_global/cstdlib: Likewise. * include/c_global/cstdio: Likewise. * include/c_global/cctype: Likewise. * include/c_global/cmath: Likewise. * include/c_global/cfenv: Likewise. * include/c_global/cwchar: Likewise. * include/c_global/cstdint: Likewise. * include/c_global/cwctype: Likewise. * include/tr1/shared_ptr.h: Likewise. * include/tr1/cinttypes: Likewise. * include/tr1/cstdio: Likewise. * include/tr1/cfenv: Likewise. * include/tr1/utility: Likewise. * include/tr1/cwchar: Likewise. * include/tr1/type_traits: Likewise. * include/tr1/memory: Likewise. * include/tr1/cstdint: Likewise. * include/tr1/regex: Likewise. * include/tr1/cwctype: Likewise. * include/tr1/cstdlib: Likewise. * include/tr1/cctype: Likewise. * include/tr1/cmath: Likewise. * include/tr1/complex: Likewise. * include/tr1/array: Likewise. * include/c_compatibility/fenv.h: Likewise. * include/c_compatibility/stdint.h: Likewise. * include/c_compatibility/inttypes.h: Likewise. * testsuite/tr1/2_general_utilities/shared_ptr/cons/43820.cc: Adjust dg-error line numbers. * testsuite/20_util/duration/requirements/typedefs_neg1.cc: Likewise. * testsuite/20_util/duration/requirements/typedefs_neg2.cc: Likewise. * testsuite/20_util/duration/requirements/typedefs_neg3.cc: Likewise. * testsuite/20_util/make_signed/requirements/typedefs_neg.cc: Likewise. * testsuite/20_util/make_unsigned/requirements/ typedefs_neg.cc: Likewise. * testsuite/20_util/declval/requirements/1_neg.cc: Likewise. * testsuite/20_util/shared_ptr/cons/43820.cc: Likewise. * testsuite/20_util/weak_ptr/comparison/cmp_neg.cc: Likewise. From-SVN: r166211
2010-11-02 19:51:23 +01:00
// Common base class for std::mutex and std::timed_mutex
class __mutex_base
{
protected:
typedef __gthread_mutex_t __native_type;
#ifdef __GTHREAD_MUTEX_INIT
__native_type _M_mutex = __GTHREAD_MUTEX_INIT;
constexpr __mutex_base() noexcept = default;
#else
__native_type _M_mutex;
__mutex_base() noexcept
{
// XXX EAGAIN, ENOMEM, EPERM, EBUSY(may), EINVAL(may)
__GTHREAD_MUTEX_INIT_FUNCTION(&_M_mutex);
}
~__mutex_base() noexcept { __gthread_mutex_destroy(&_M_mutex); }
#endif
__mutex_base(const __mutex_base&) = delete;
__mutex_base& operator=(const __mutex_base&) = delete;
};
// Common base class for std::recursive_mutex and std::timed_recursive_mutex
class __recursive_mutex_base
{
protected:
typedef __gthread_recursive_mutex_t __native_type;
__recursive_mutex_base(const __recursive_mutex_base&) = delete;
__recursive_mutex_base& operator=(const __recursive_mutex_base&) = delete;
#ifdef __GTHREAD_RECURSIVE_MUTEX_INIT
__native_type _M_mutex = __GTHREAD_RECURSIVE_MUTEX_INIT;
__recursive_mutex_base() = default;
#else
__native_type _M_mutex;
__recursive_mutex_base()
{
// XXX EAGAIN, ENOMEM, EPERM, EBUSY(may), EINVAL(may)
__GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION(&_M_mutex);
}
~__recursive_mutex_base()
{ _S_destroy(&_M_mutex); }
private:
// FIXME: gthreads doesn't define __gthread_recursive_mutex_destroy
// so we need to obtain a __gthread_mutex_t to destroy
// matches when there's only one mutex type
template<typename _Rm>
static
typename enable_if<is_same<_Rm, __gthread_mutex_t>::value, void>::type
_S_destroy(_Rm* __mx)
{ __gthread_mutex_destroy(__mx); }
// matches a recursive mutex with a member 'actual'
template<typename _Rm>
static typename enable_if<(bool)sizeof(&_Rm::actual), void>::type
_S_destroy(_Rm* __mx)
{ __gthread_mutex_destroy(&__mx->actual); }
// matches a gthr-win32.h recursive mutex
template<typename _Rm>
static typename enable_if<(bool)sizeof(&_Rm::sema), void>::type
_S_destroy(_Rm* __mx)
{
__gthread_mutex_t __tmp;
_S_destroy_win32(&__tmp, __mx);
}
template<typename _Mx, typename _Rm>
static void
_S_destroy_win32(_Mx* __mx, _Rm const* __rmx)
{
__mx->counter = __rmx->counter;
__mx->sema = __rmx->sema;
__gthread_mutex_destroy(__mx);
}
#endif
};
user.cfg.in: Tweaks. 2009-02-20 Benjamin Kosnik <bkoz@redhat.com> * doc/doxygen/user.cfg.in: Tweaks. * doc/doxygen/doxygroups.cc: Prefer markup that can be elsewhere, be elsewhere. * include/tr1_impl/unordered_map: Just use most specialized container module. * include/tr1_impl/unordered_set: Same. * include/tr1_impl/array: Same. * include/bits/stl_list.h: Same. * include/bits/stl_map.h: Same. * include/bits/stl_queue.h: Same. * include/bits/stl_set.h: Same. * include/bits/stl_stack.h: Same. * include/bits/forward_list.h: Same. * include/bits/basic_string.h: Same. * include/bits/stl_multimap.h: Same. * include/bits/stl_vector.h: Same. * include/bits/stl_deque.h: Same. * include/bits/stl_multiset.h: Same. * include/bits/stl_bvector.h: Same. * include/backward/binders.h: Change binder module to binders. * include/std/complex: Add complex_numers module. * include/tr1_impl/complex: Same. * include/std/valarray: Add numeric_arrays module. * include/bits/gslice_array.h: Same. * include/bits/gslice.h: Same. * include/bits/mask_array.h: Same. * include/bits/slice_array.h: Same. * include/bits/indirect_array.h: Same. * include/bits/allocator.h: Add allocators module. * include/ext/throw_allocator.h * include/ext/pool_allocator.h * include/ext/bitmap_allocator.h * include/ext/new_allocator.h * include/ext/malloc_allocator.h * include/ext/array_allocator.h * include/ext/mt_allocator.h * include/ext/debug_allocator.h * include/ext/extptr_allocator.h * include/tr1_impl/functional: Move namespace markup here. * include/tr1_impl/regex: Same. * include/tr1_impl/type_traits: Add metaprogramming module. * include/std/type_traits: Same. * include/std/memory: Add memory module. * include/std/ratio: Add ratio module. * include/std/chrono: Move namespace markup here, add time module. * include/std/thread: Move namespace markup here, add concurrency module. * include/std/mutex: Use concurrency module. * include/std/condition_variable: Same. * include/bits/ios_base.h: Refine io module. * include/bits/basic_ios.h: Same. * include/std/fstream: Same. * include/std/istream: Same. * include/std/ostream: Same. * include/std/sstream: Same. * include/ext/vstring.h: Correct parameter markup. * include/bits/shared_ptr.h: Add pointer_abstractions module. * include/bits/unique_ptr.h: Same. * include/bits/algorithmfwd.h: Add mutating_algorithms, non_mutating_algorithms, sorting_algorithms. Adjust nesting. * include/bits/stl_heap.h: Add markup for new groupings. * include/bits/stl_algobase.h: Same. * include/bits/stl_algo.h: Same. * include/c_compatibility/stdatomic.h: Add atomics module. * include/c_global/cstdatomic: Same. * libsupc++/exception: Add exceptions module. * libsupc++/typeinfo: Same. * libsupc++/new: Same. * libsupc++/exception_ptr.h: Same. * include/std/system_error: Same. * include/std/stdexcept: Same. * libsupc++/cxxabi.h: Move doxygroups.cc markup here. * libsupc++/cxxabi-forced.h: Same. * testsuite/27_io/ios_base/cons/assign_neg.cc: Fix up line numbers. * testsuite/27_io/ios_base/cons/copy_neg.cc: Same. * testsuite/30_threads/condition_variable_any/cons/assign_neg.cc: Same. * testsuite/30_threads/condition_variable_any/cons/copy_neg.cc: Same. * testsuite/30_threads/mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/mutex/cons/copy_neg.cc: Same. * testsuite/30_threads/timed_mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/timed_mutex/cons/copy_neg.cc: Same. * testsuite/30_threads/thread/cons/assign_neg.cc: Same. * testsuite/30_threads/thread/cons/copy_neg.cc: Same. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: Same. * testsuite/30_threads/condition_variable/cons/assign_neg.cc: Same. * testsuite/30_threads/condition_variable/cons/copy_neg.cc: Same. * testsuite/30_threads/recursive_timed_mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/recursive_timed_mutex/cons/copy_neg.cc: Same. * testsuite/29_atomics/atomic/cons/assign_neg.cc: Same. * testsuite/29_atomics/atomic/cons/copy_neg.cc: Same. * testsuite/23_containers/vector/requirements/dr438/assign_neg.cc: Same. * testsuite/23_containers/vector/requirements/dr438/insert_neg.cc: Same. * testsuite/23_containers/vector/requirements/dr438/ constructor_1_neg.cc: Same. * testsuite/23_containers/vector/requirements/dr438/ constructor_2_neg.cc: Same. * testsuite/23_containers/deque/requirements/dr438/assign_neg.cc: Same. * testsuite/23_containers/deque/requirements/dr438/insert_neg.cc: Same. * testsuite/23_containers/deque/requirements/dr438/ constructor_1_neg.cc: Same. * testsuite/23_containers/deque/requirements/dr438/ constructor_2_neg.cc: Same. * testsuite/23_containers/list/requirements/dr438/assign_neg.cc: Same. * testsuite/23_containers/list/requirements/dr438/insert_neg.cc: Same. * testsuite/23_containers/list/requirements/dr438/ constructor_1_neg.cc: Same. * testsuite/23_containers/list/requirements/dr438/ constructor_2_neg.cc: Same. * testsuite/20_util/duration/cons/1_neg.cc: Same. * testsuite/20_util/duration/requirements/typedefs_neg1.cc: Same. * testsuite/20_util/duration/requirements/typedefs_neg2.cc: Same. * testsuite/20_util/duration/requirements/typedefs_neg3.cc: Same. * testsuite/20_util/unique_ptr/modifiers/reset_neg.cc: Same. * testsuite/20_util/unique_ptr/assign/assign.cc: Same. * testsuite/20_util/make_signed/requirements/typedefs_neg.cc: Same. * testsuite/20_util/make_unsigned/requirements/typedefs_neg.cc: Same. * testsuite/20_util/ratio/cons/cons_overflow.cc: Same. * testsuite/20_util/ratio/operations/ops_overflow.cc: Same. From-SVN: r144343
2009-02-21 01:45:21 +01:00
/**
* @defgroup mutexes Mutexes
* @ingroup concurrency
*
* Classes for mutex support.
* @{
*/
condition_variable: New. 2008-05-06 Benjamin Kosnik <bkoz@redhat.com> * include/std/condition_variable: New. * include/std/mutex: New. * src/condition_variable.cc: New. * src/mutex.cc: New. * include/bits/functexcept.h: Add __throw_system_error varients. * src/functexcept.cc: Same. * config/abi/pre/gnu.ver: Add exports. * doc/xml/manual/using.xml: Add new includes. * doc/doxygen/user.cfg.in: Doxygen support. * doc/doxygen/doxygroups.cc: Same. * include/Makefile.am: Add mutex, condition_variable. * include/Makefile.in: Regenerated. * src/Makefile.am: Add mutex.cc, condition_variable.cc. * src/Makefile.in: Regenerated. * testsuite/30_threads: New. * testsuite/30_threads/lock_error: New. * testsuite/30_threads/mutex: New. * testsuite/30_threads/mutex/dest: New. * testsuite/30_threads/mutex/dest/destructor_locked.cc: New. * testsuite/30_threads/mutex/native_handle: New. * testsuite/30_threads/mutex/native_handle/1.cc: New. * testsuite/30_threads/mutex/cons: New. * testsuite/30_threads/mutex/cons/assign_neg.cc: New. * testsuite/30_threads/mutex/cons/1.cc: New. * testsuite/30_threads/mutex/cons/copy_neg.cc: New. * testsuite/30_threads/mutex/requirements: New. * testsuite/30_threads/mutex/requirements/typedefs.cc: New. * testsuite/30_threads/mutex/try_lock: New. * testsuite/30_threads/mutex/try_lock/1.cc: New. * testsuite/30_threads/mutex/try_lock/2.cc: New. * testsuite/30_threads/mutex/lock: New. * testsuite/30_threads/mutex/lock/1.cc: New. * testsuite/30_threads/mutex/unlock: New. * testsuite/30_threads/mutex/unlock/1.cc: New. * testsuite/30_threads/recursive_mutex: New. * testsuite/30_threads/recursive_mutex/dest: New. * testsuite/30_threads/recursive_mutex/dest/destructor_locked.cc: New. * testsuite/30_threads/recursive_mutex/native_handle: New. * testsuite/30_threads/recursive_mutex/native_handle/1.cc: New. * testsuite/30_threads/recursive_mutex/cons: New. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: New. * testsuite/30_threads/recursive_mutex/cons/1.cc: New. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: New. * testsuite/30_threads/recursive_mutex/requirements: New. * testsuite/30_threads/recursive_mutex/requirements/typedefs.cc: New. * testsuite/30_threads/lock_guard: New. * testsuite/30_threads/lock_guard/requirements: New. * testsuite/30_threads/lock_guard/requirements/typedefs.cc: New. * testsuite/30_threads/lock_guard/requirements/ explicit_instantiation.cc: New. * testsuite/30_threads/headers: New. * testsuite/30_threads/headers/mutex: New. * testsuite/30_threads/headers/mutex/types_std_c++0x.cc: New. * testsuite/30_threads/headers/mutex/std_c++0x_neg.cc: New. * testsuite/30_threads/headers/condition_variable: New. * testsuite/30_threads/headers/condition_variable/ types_std_c++0x.cc: New. * testsuite/30_threads/headers/condition_variable/std_c++0x_neg.cc: New. * testsuite/30_threads/once_flag: New. * testsuite/30_threads/unique_lock: New. * testsuite/30_threads/unique_lock/requirements: New. * testsuite/30_threads/unique_lock/requirements/typedefs.cc: New. * testsuite/30_threads/unique_lock/requirements/ explicit_instantiation.cc: New. * testsuite/17_intro/headers/c++200x/all.cc: Add new includes. From-SVN: r135007
2008-05-06 23:11:47 +02:00
/// mutex
class mutex : private __mutex_base
condition_variable: New. 2008-05-06 Benjamin Kosnik <bkoz@redhat.com> * include/std/condition_variable: New. * include/std/mutex: New. * src/condition_variable.cc: New. * src/mutex.cc: New. * include/bits/functexcept.h: Add __throw_system_error varients. * src/functexcept.cc: Same. * config/abi/pre/gnu.ver: Add exports. * doc/xml/manual/using.xml: Add new includes. * doc/doxygen/user.cfg.in: Doxygen support. * doc/doxygen/doxygroups.cc: Same. * include/Makefile.am: Add mutex, condition_variable. * include/Makefile.in: Regenerated. * src/Makefile.am: Add mutex.cc, condition_variable.cc. * src/Makefile.in: Regenerated. * testsuite/30_threads: New. * testsuite/30_threads/lock_error: New. * testsuite/30_threads/mutex: New. * testsuite/30_threads/mutex/dest: New. * testsuite/30_threads/mutex/dest/destructor_locked.cc: New. * testsuite/30_threads/mutex/native_handle: New. * testsuite/30_threads/mutex/native_handle/1.cc: New. * testsuite/30_threads/mutex/cons: New. * testsuite/30_threads/mutex/cons/assign_neg.cc: New. * testsuite/30_threads/mutex/cons/1.cc: New. * testsuite/30_threads/mutex/cons/copy_neg.cc: New. * testsuite/30_threads/mutex/requirements: New. * testsuite/30_threads/mutex/requirements/typedefs.cc: New. * testsuite/30_threads/mutex/try_lock: New. * testsuite/30_threads/mutex/try_lock/1.cc: New. * testsuite/30_threads/mutex/try_lock/2.cc: New. * testsuite/30_threads/mutex/lock: New. * testsuite/30_threads/mutex/lock/1.cc: New. * testsuite/30_threads/mutex/unlock: New. * testsuite/30_threads/mutex/unlock/1.cc: New. * testsuite/30_threads/recursive_mutex: New. * testsuite/30_threads/recursive_mutex/dest: New. * testsuite/30_threads/recursive_mutex/dest/destructor_locked.cc: New. * testsuite/30_threads/recursive_mutex/native_handle: New. * testsuite/30_threads/recursive_mutex/native_handle/1.cc: New. * testsuite/30_threads/recursive_mutex/cons: New. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: New. * testsuite/30_threads/recursive_mutex/cons/1.cc: New. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: New. * testsuite/30_threads/recursive_mutex/requirements: New. * testsuite/30_threads/recursive_mutex/requirements/typedefs.cc: New. * testsuite/30_threads/lock_guard: New. * testsuite/30_threads/lock_guard/requirements: New. * testsuite/30_threads/lock_guard/requirements/typedefs.cc: New. * testsuite/30_threads/lock_guard/requirements/ explicit_instantiation.cc: New. * testsuite/30_threads/headers: New. * testsuite/30_threads/headers/mutex: New. * testsuite/30_threads/headers/mutex/types_std_c++0x.cc: New. * testsuite/30_threads/headers/mutex/std_c++0x_neg.cc: New. * testsuite/30_threads/headers/condition_variable: New. * testsuite/30_threads/headers/condition_variable/ types_std_c++0x.cc: New. * testsuite/30_threads/headers/condition_variable/std_c++0x_neg.cc: New. * testsuite/30_threads/once_flag: New. * testsuite/30_threads/unique_lock: New. * testsuite/30_threads/unique_lock/requirements: New. * testsuite/30_threads/unique_lock/requirements/typedefs.cc: New. * testsuite/30_threads/unique_lock/requirements/ explicit_instantiation.cc: New. * testsuite/17_intro/headers/c++200x/all.cc: Add new includes. From-SVN: r135007
2008-05-06 23:11:47 +02:00
{
public:
condition_variable (condition_variable): Remove _M_internal_mutex. 2009-02-09 Benjamin Kosnik <bkoz@redhat.com> * include/std/condition_variable (condition_variable): Remove _M_internal_mutex. Add private __native_type typedef. * src/condition_variable.cc (condition_variable::notify_one): Remove _M_internal_mutex use. Use typedef. (condition_variable::notify_all): Same. * include/std/mutex (mutex): Add private __native_type typedef. Use it. (recursive_mutex): Same. (timed_mutex): Same. (recursive_timed_mutex): Same. (once_flag): Make __native_type typedef private. * include/std/thread (this_thread): Add minimal markup. * testsuite/30_threads/condition_variable_any/cons/assign_neg.cc: Adjust line numbers. * testsuite/30_threads/condition_variable_any/cons/copy_neg.cc: Same. * testsuite/30_threads/mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/mutex/cons/copy_neg.cc: Same. * testsuite/30_threads/timed_mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/timed_mutex/cons/copy_neg.cc: Same. * testsuite/30_threads/thread/cons/assign_neg.cc: Same. * testsuite/30_threads/thread/cons/copy_neg.cc: Same. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: Same. * testsuite/30_threads/condition_variable/cons/assign_neg.cc: Same. * testsuite/30_threads/condition_variable/cons/copy_neg.cc: Same. * testsuite/30_threads/recursive_timed_mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/recursive_timed_mutex/cons/copy_neg.cc: Same. * testsuite/util/thread/all.h: Testsuite utilities for testing thread. * testsuite/30_threads/condition_variable_any/native_handle/ typesizes.cc: New. * testsuite/30_threads/mutex/native_handle/typesizes.cc: Same. * testsuite/30_threads/timed_mutex/native_handle/typesizes.cc: Same. * testsuite/30_threads/thread/native_handle/typesizes.cc: Same. * testsuite/30_threads/recursive_mutex/native_handle/typesizes.cc: Same. * testsuite/30_threads/condition_variable/native_handle/ typesizes.cc: Same. * testsuite/30_threads/recursive_timed_mutex/native_handle/ typesizes.cc: Same. From-SVN: r144053
2009-02-10 09:29:57 +01:00
typedef __native_type* native_handle_type;
condition_variable: New. 2008-05-06 Benjamin Kosnik <bkoz@redhat.com> * include/std/condition_variable: New. * include/std/mutex: New. * src/condition_variable.cc: New. * src/mutex.cc: New. * include/bits/functexcept.h: Add __throw_system_error varients. * src/functexcept.cc: Same. * config/abi/pre/gnu.ver: Add exports. * doc/xml/manual/using.xml: Add new includes. * doc/doxygen/user.cfg.in: Doxygen support. * doc/doxygen/doxygroups.cc: Same. * include/Makefile.am: Add mutex, condition_variable. * include/Makefile.in: Regenerated. * src/Makefile.am: Add mutex.cc, condition_variable.cc. * src/Makefile.in: Regenerated. * testsuite/30_threads: New. * testsuite/30_threads/lock_error: New. * testsuite/30_threads/mutex: New. * testsuite/30_threads/mutex/dest: New. * testsuite/30_threads/mutex/dest/destructor_locked.cc: New. * testsuite/30_threads/mutex/native_handle: New. * testsuite/30_threads/mutex/native_handle/1.cc: New. * testsuite/30_threads/mutex/cons: New. * testsuite/30_threads/mutex/cons/assign_neg.cc: New. * testsuite/30_threads/mutex/cons/1.cc: New. * testsuite/30_threads/mutex/cons/copy_neg.cc: New. * testsuite/30_threads/mutex/requirements: New. * testsuite/30_threads/mutex/requirements/typedefs.cc: New. * testsuite/30_threads/mutex/try_lock: New. * testsuite/30_threads/mutex/try_lock/1.cc: New. * testsuite/30_threads/mutex/try_lock/2.cc: New. * testsuite/30_threads/mutex/lock: New. * testsuite/30_threads/mutex/lock/1.cc: New. * testsuite/30_threads/mutex/unlock: New. * testsuite/30_threads/mutex/unlock/1.cc: New. * testsuite/30_threads/recursive_mutex: New. * testsuite/30_threads/recursive_mutex/dest: New. * testsuite/30_threads/recursive_mutex/dest/destructor_locked.cc: New. * testsuite/30_threads/recursive_mutex/native_handle: New. * testsuite/30_threads/recursive_mutex/native_handle/1.cc: New. * testsuite/30_threads/recursive_mutex/cons: New. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: New. * testsuite/30_threads/recursive_mutex/cons/1.cc: New. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: New. * testsuite/30_threads/recursive_mutex/requirements: New. * testsuite/30_threads/recursive_mutex/requirements/typedefs.cc: New. * testsuite/30_threads/lock_guard: New. * testsuite/30_threads/lock_guard/requirements: New. * testsuite/30_threads/lock_guard/requirements/typedefs.cc: New. * testsuite/30_threads/lock_guard/requirements/ explicit_instantiation.cc: New. * testsuite/30_threads/headers: New. * testsuite/30_threads/headers/mutex: New. * testsuite/30_threads/headers/mutex/types_std_c++0x.cc: New. * testsuite/30_threads/headers/mutex/std_c++0x_neg.cc: New. * testsuite/30_threads/headers/condition_variable: New. * testsuite/30_threads/headers/condition_variable/ types_std_c++0x.cc: New. * testsuite/30_threads/headers/condition_variable/std_c++0x_neg.cc: New. * testsuite/30_threads/once_flag: New. * testsuite/30_threads/unique_lock: New. * testsuite/30_threads/unique_lock/requirements: New. * testsuite/30_threads/unique_lock/requirements/typedefs.cc: New. * testsuite/30_threads/unique_lock/requirements/ explicit_instantiation.cc: New. * testsuite/17_intro/headers/c++200x/all.cc: Add new includes. From-SVN: r135007
2008-05-06 23:11:47 +02:00
libstdc++: N3126 draft support. * include/std/chrono: Extend constexpr application. * testsuite/util/testsuite_common_types.h (constexpr_default_constructible, constexpr_single_value_constructible) : Add comments about implied constraints. * testsuite/20_util/duration/cons/constexpr.cc: Activate all tests. * testsuite/20_util/time_point/cons/constexpr.cc: Same. * testsuite/20_util/time_point/requirements/constexpr_functions.cc: Same. * testsuite/20_util/ratio/cons/cons_overflow_neg.cc: Adjust line numbers. * testsuite/20_util/time_point_cast/constexpr.cc: New. * include/std/bitset: Use __SIZEOF_* macros to re-create original logic instead of slipshod application of std::numeric_limits<T>::max() macros. * testsuite/util/testsuite_common_types.h (constexpr_default_constructible): Modify. * include/std/chrono: Tested constexpr. * testsuite/20_util/duration_cast/constexpr.cc: New. * testsuite/20_util/time_point/cons/constexpr.cc: New. * testsuite/20_util/duration/cons/constexpr.cc: Add single_value tests. * testsuite/20_util/duration/requirements/typedefs_neg1.cc: Adjust line numbers. * testsuite/20_util/duration/requirements/typedefs_neg2.cc: Same. * testsuite/20_util/duration/requirements/typedefs_neg3.cc: Same. * testsuite/20_util/time_point/cons/constexpr.cc: Add single_value tests. * testsuite/20_util/time_point/requirements/constexpr_functions.cc: Add. * testsuite/util/testsuite_common_types.h: Adjust init. * include/std/chrono (duration): Remove defaulted constructor, replace with mem-init list. * testsuite/20_util/duration/cons/constexpr.cc: Add single value. * testsuite/20_util/duration/requirements/constexpr_functions.cc: Add non-static member functions. * testsuite/20_util/default_delete/cons/constexpr.cc: New, xfail. * testsuite/20_util/enable_shared_from_this/cons/constexpr.cc: Same. * testsuite/20_util/shared_ptr/cons/constexpr.cc: Same. * testsuite/20_util/time_point/requirements/constexpr_functions.cc: Same. * testsuite/20_util/unique_ptr/cons/constexpr.cc: Same. * testsuite/20_util/weak_ptr/cons/constexpr.cc: Same. * include/std/bitset: Add constexpr as per N3126 draft. * testsuite/23_containers/bitset/cons/constexpr.cc: New. * testsuite/23_containers/bitset/requirements/constexpr_functions.cc: New. * testsuite/util/testsuite_common_types.h: Reset condition. * include/bits/random.h: Remove misleading comments. * include/bits/regex.h: Add constexpr. * testsuite/28_regex/05_constants/syntax_option_type.cc: Add tests. * testsuite/28_regex/08_basic_regex/requirements/constexpr_data.cc: New. PR libstdc++/46134 * include/std/chrono: Use default constructor. * testsuite/util/testsuite_common_types.h (constexpr_default_constructible): Adjust condition. PR libstdc++/46133 * include/std/complex: Adjust complex specialization default constructors for constexpr. * testsuite/26_numerics/complex/cons/constexpr.cc: Enable tests. * include/bits/random.h: Adjust for constexpr as per N3126 draft. * testsuite/26_numerics/random/discard_block_engine/requirements/ constexpr_data.cc: New. * testsuite/26_numerics/random/discard_block_engine/requirements/ constexpr_functions.cc: New. * testsuite/26_numerics/random/independent_bits_engine/requirements/ constexpr_functions.cc: New. * testsuite/26_numerics/random/linear_congruential_engine/requirements/ constexpr_data.cc: New. * testsuite/26_numerics/random/linear_congruential_engine/requirements/ constexpr_functions.cc: New. * testsuite/26_numerics/random/mersenne_twister_engine/requirements/ constexpr_data.cc: New. * testsuite/26_numerics/random/mersenne_twister_engine/requirements/ constexpr_functions.cc: New. * testsuite/26_numerics/random/shuffle_order_engine/requirements/ constexpr_data.cc: New. * testsuite/26_numerics/random/shuffle_order_engine/requirements/ constexpr_functions.cc: New. * testsuite/26_numerics/random/subtract_with_carry_engine/requirements/ constexpr_data.cc: New. * testsuite/26_numerics/random/subtract_with_carry_engine/requirements/ constexpr_functions.cc: New. * include/bits/stream_iterator.h: Add constexpr as per N3126 draft. * include/bits/streambuf_iterator.h: Same. * include/std/complex: Same. * testsuite/24_iterators/istream_iterator/cons/constexpr.cc: New. * testsuite/24_iterators/istreambuf_iterator/cons/constexpr.cc: New. * testsuite/26_numerics/complex/cons/constexpr.cc: New. * testsuite/26_numerics/complex/requirements/constexpr_functions.cc: New. * include/bits/char_traits.h: Add constexpr as per N3126 draft. * testsuite/21_strings/char_traits/requirements/constexpr_functions.cc: New. * include/tr1_impl/array: Add constexpr as per N3126 draft. * testsuite/23_containers/array/requirements/ constexpr_functions.cc: New. * include/bits/shared_ptr.h: Revert changes. * include/bits/unique_ptr.h: Same. * include/std/chrono: Adjust. * include/tr1_impl/type_traits: Same. * testsuite/util/testsuite_common_types.h: Add test functors. * testsuite/20_util/duration/cons/constexpr.cc: New. * testsuite/20_util/duration/requirements/constexpr_functions.cc: Same. * testsuite/20_util/pair/cons/constexpr.cc: Same. * testsuite/20_util/ratio/requirements/constexpr_data.cc: Same. * testsuite/27_io/ios_base/types/fmtflags/constexpr_operators.cc: Same. * testsuite/27_io/ios_base/types/iostate/constexpr_operators.cc: Same. * testsuite/27_io/ios_base/types/openmode/constexpr_operators.cc: Same. * testsuite/30_threads/call_once/constexpr.cc: Same. * testsuite/30_threads/mutex/cons/constexpr.cc: Same. * testsuite/30_threads/once_flag/cons/constexpr.cc: Same. * testsuite/tr1/4_metaprogramming/integral_constant/requirements/ constexpr_data.cc: Same. * testsuite/29_atomics/atomic/cons/assign_neg.cc: Adjust line numbers. * testsuite/29_atomics/atomic/cons/copy_neg.cc: Same. * testsuite/29_atomics/atomic_integral/cons/assign_neg.cc: Same. * testsuite/29_atomics/atomic_integral/cons/copy_neg.cc: Same. * testsuite/29_atomics/atomic_integral/operators/bitwise_neg.cc: Same. * include/bits/allocator.h: Add constexpr as per N3126 draft. * include/bits/ios_base.h: Same. * include/bits/shared_ptr.h: Same. * include/bits/unique_ptr.h: Same. * include/bits/stl_iterator.h: Same. * include/bits/stl_pair.h: Same. * include/std/tuple: Same. * include/tr1_impl/type_traits: Same. * include/std/chrono: Same. * include/std/ratio: Same. * include/std/mutex: Same. * src/mutex.cc: Same. * testsuite/20_util/duration/requirements/typedefs_neg1.cc: Adjust. * testsuite/20_util/duration/requirements/typedefs_neg2.cc: Same. * testsuite/20_util/duration/requirements/typedefs_neg3.cc: Same. * testsuite/20_util/weak_ptr/comparison/cmp_neg.cc: Same. * testsuite/27_io/ios_base/cons/assign_neg.cc: Same. * testsuite/27_io/ios_base/cons/copy_neg.cc: Same. * doc/doxygen/user.cfg.in: Replace _GLIBCXX_USE_CONSTEXPR, _GLIBCXX_CONSTEXPR for doxygen generation. * src/limits.cc: Undef. * testsuite/29_atomics/atomic/cons/constexpr.cc: Adjust. * testsuite/29_atomics/atomic_address/cons/constexpr.cc: Same. * testsuite/29_atomics/atomic_integral/cons/constexpr.cc: Same. * testsuite/29_atomics/atomic_integral/operators/bitwise_neg.c: Same. * testsuite/18_support/numeric_limits/constexpr.cc: To... * testsuite/18_support/numeric_limits/requirements/ constexpr_data.cc, constexpr_functions.cc: ...this * testsuite/util/testsuite_common_types.h (constexpr_single_value_constructible): Add. * testsuite/29_atomics/atomic/cons/constexpr.cc: Adjust name. * testsuite/29_atomics/atomic_integral/cons/constexpr.cc: Same. * testsuite/29_atomics/atomic_address/cons/constexpr.cc: New. * testsuite/18_support/numeric_limits/constexpr.cc: New. * testsuite/29_atomics/atomic/cons/assign_neg.cc: Adjust line numbers. * testsuite/29_atomics/atomic/cons/constexpr.cc: Same. * testsuite/29_atomics/atomic/cons/copy_neg.cc: Same. * testsuite/29_atomics/atomic_integral/cons/assign_neg.cc: Same. * testsuite/29_atomics/atomic_integral/cons/constexpr.cc: Same. * testsuite/29_atomics/atomic_integral/cons/copy_neg.cc: Same. * testsuite/29_atomics/atomic_integral/operators/bitwise_neg.cc: Same. * testsuite/29_atomics/atomic_integral/operators/decrement_neg.cc: Same. * testsuite/29_atomics/atomic_integral/operators/increment_neg.cc: Same. * include/bits/c++config (_GLIBCXX_CONSTEXPR): Add. (_GLIBCXX_USE_CONSTEXPR): Add. * include/std/limits: Use it. * src/limits.cc: Adjust. * testsuite/ext/profile/mutex_extensions.cc: Change line number. * include/bits/atomic_0.h: Rework for N3126 draft, add constexpr. * include/bits/atomic_2.h: Same. * include/bits/atomic_base.h: Same. * include/std/atomic: Same. * src/atomic.cc: Same. * include/bits/atomicfwd_c.h: Remove. * include/bits/atomicfwd_cxx.h: Remove. * include/c_compatibility/stdatomic.h: Remove. * include/Makefile.am: Remove atomicfwd_c.h, atomicfwd_cxx.h, stdatomic.h. * include/Makefile.in: Regenerate. * doc/xml/manual/using.xml: Update list of header files for changes. * testsuite/util/testsuite_common_types.h (constexpr_constructible): Add. * testsuite/29_atomics/atomic/cons/constexpr.cc: New. * testsuite/29_atomics/atomic_integral/cons/constexpr.cc: New. * testsuite/17_intro/headers/c++200x/stdc++.cc: Modify. * testsuite/29_atomics/atomic/cons/assign_neg.cc: Same. * testsuite/29_atomics/atomic_address/cons/assign_neg.cc: Same. * testsuite/29_atomics/atomic_flag/cons/1.cc: Same. * testsuite/29_atomics/atomic_integral/cons/assign_neg.cc: Same. * testsuite/29_atomics/headers/atomic/macros.cc: Same. * testsuite/29_atomics/headers/atomic/types_std_c++0x.cc: Same. * testsuite/29_atomics/headers/atomic/types_std_c++0x_neg.cc: Same. * testsuite/29_atomics/atomic_flag/test_and_set/implicit.c: Remove. * testsuite/29_atomics/atomic_flag/test_and_set/explicit.c: Same. * testsuite/29_atomics/atomic_flag/clear/1.c: Same. * testsuite/29_atomics/headers/stdatomic.h/debug_mode.c: Same. * testsuite/29_atomics/headers/stdatomic.h/functions.c: Same. * testsuite/29_atomics/headers/stdatomic.h/macros.c: Same. * testsuite/29_atomics/headers/stdatomic.h/types.c: Same. * testsuite/util/testsuite_abi.cc: Add GLIBCXX_3.4.16. From-SVN: r166171
2010-11-02 03:35:28 +01:00
#ifdef __GTHREAD_MUTEX_INIT
constexpr
libstdc++: N3126 draft support. * include/std/chrono: Extend constexpr application. * testsuite/util/testsuite_common_types.h (constexpr_default_constructible, constexpr_single_value_constructible) : Add comments about implied constraints. * testsuite/20_util/duration/cons/constexpr.cc: Activate all tests. * testsuite/20_util/time_point/cons/constexpr.cc: Same. * testsuite/20_util/time_point/requirements/constexpr_functions.cc: Same. * testsuite/20_util/ratio/cons/cons_overflow_neg.cc: Adjust line numbers. * testsuite/20_util/time_point_cast/constexpr.cc: New. * include/std/bitset: Use __SIZEOF_* macros to re-create original logic instead of slipshod application of std::numeric_limits<T>::max() macros. * testsuite/util/testsuite_common_types.h (constexpr_default_constructible): Modify. * include/std/chrono: Tested constexpr. * testsuite/20_util/duration_cast/constexpr.cc: New. * testsuite/20_util/time_point/cons/constexpr.cc: New. * testsuite/20_util/duration/cons/constexpr.cc: Add single_value tests. * testsuite/20_util/duration/requirements/typedefs_neg1.cc: Adjust line numbers. * testsuite/20_util/duration/requirements/typedefs_neg2.cc: Same. * testsuite/20_util/duration/requirements/typedefs_neg3.cc: Same. * testsuite/20_util/time_point/cons/constexpr.cc: Add single_value tests. * testsuite/20_util/time_point/requirements/constexpr_functions.cc: Add. * testsuite/util/testsuite_common_types.h: Adjust init. * include/std/chrono (duration): Remove defaulted constructor, replace with mem-init list. * testsuite/20_util/duration/cons/constexpr.cc: Add single value. * testsuite/20_util/duration/requirements/constexpr_functions.cc: Add non-static member functions. * testsuite/20_util/default_delete/cons/constexpr.cc: New, xfail. * testsuite/20_util/enable_shared_from_this/cons/constexpr.cc: Same. * testsuite/20_util/shared_ptr/cons/constexpr.cc: Same. * testsuite/20_util/time_point/requirements/constexpr_functions.cc: Same. * testsuite/20_util/unique_ptr/cons/constexpr.cc: Same. * testsuite/20_util/weak_ptr/cons/constexpr.cc: Same. * include/std/bitset: Add constexpr as per N3126 draft. * testsuite/23_containers/bitset/cons/constexpr.cc: New. * testsuite/23_containers/bitset/requirements/constexpr_functions.cc: New. * testsuite/util/testsuite_common_types.h: Reset condition. * include/bits/random.h: Remove misleading comments. * include/bits/regex.h: Add constexpr. * testsuite/28_regex/05_constants/syntax_option_type.cc: Add tests. * testsuite/28_regex/08_basic_regex/requirements/constexpr_data.cc: New. PR libstdc++/46134 * include/std/chrono: Use default constructor. * testsuite/util/testsuite_common_types.h (constexpr_default_constructible): Adjust condition. PR libstdc++/46133 * include/std/complex: Adjust complex specialization default constructors for constexpr. * testsuite/26_numerics/complex/cons/constexpr.cc: Enable tests. * include/bits/random.h: Adjust for constexpr as per N3126 draft. * testsuite/26_numerics/random/discard_block_engine/requirements/ constexpr_data.cc: New. * testsuite/26_numerics/random/discard_block_engine/requirements/ constexpr_functions.cc: New. * testsuite/26_numerics/random/independent_bits_engine/requirements/ constexpr_functions.cc: New. * testsuite/26_numerics/random/linear_congruential_engine/requirements/ constexpr_data.cc: New. * testsuite/26_numerics/random/linear_congruential_engine/requirements/ constexpr_functions.cc: New. * testsuite/26_numerics/random/mersenne_twister_engine/requirements/ constexpr_data.cc: New. * testsuite/26_numerics/random/mersenne_twister_engine/requirements/ constexpr_functions.cc: New. * testsuite/26_numerics/random/shuffle_order_engine/requirements/ constexpr_data.cc: New. * testsuite/26_numerics/random/shuffle_order_engine/requirements/ constexpr_functions.cc: New. * testsuite/26_numerics/random/subtract_with_carry_engine/requirements/ constexpr_data.cc: New. * testsuite/26_numerics/random/subtract_with_carry_engine/requirements/ constexpr_functions.cc: New. * include/bits/stream_iterator.h: Add constexpr as per N3126 draft. * include/bits/streambuf_iterator.h: Same. * include/std/complex: Same. * testsuite/24_iterators/istream_iterator/cons/constexpr.cc: New. * testsuite/24_iterators/istreambuf_iterator/cons/constexpr.cc: New. * testsuite/26_numerics/complex/cons/constexpr.cc: New. * testsuite/26_numerics/complex/requirements/constexpr_functions.cc: New. * include/bits/char_traits.h: Add constexpr as per N3126 draft. * testsuite/21_strings/char_traits/requirements/constexpr_functions.cc: New. * include/tr1_impl/array: Add constexpr as per N3126 draft. * testsuite/23_containers/array/requirements/ constexpr_functions.cc: New. * include/bits/shared_ptr.h: Revert changes. * include/bits/unique_ptr.h: Same. * include/std/chrono: Adjust. * include/tr1_impl/type_traits: Same. * testsuite/util/testsuite_common_types.h: Add test functors. * testsuite/20_util/duration/cons/constexpr.cc: New. * testsuite/20_util/duration/requirements/constexpr_functions.cc: Same. * testsuite/20_util/pair/cons/constexpr.cc: Same. * testsuite/20_util/ratio/requirements/constexpr_data.cc: Same. * testsuite/27_io/ios_base/types/fmtflags/constexpr_operators.cc: Same. * testsuite/27_io/ios_base/types/iostate/constexpr_operators.cc: Same. * testsuite/27_io/ios_base/types/openmode/constexpr_operators.cc: Same. * testsuite/30_threads/call_once/constexpr.cc: Same. * testsuite/30_threads/mutex/cons/constexpr.cc: Same. * testsuite/30_threads/once_flag/cons/constexpr.cc: Same. * testsuite/tr1/4_metaprogramming/integral_constant/requirements/ constexpr_data.cc: Same. * testsuite/29_atomics/atomic/cons/assign_neg.cc: Adjust line numbers. * testsuite/29_atomics/atomic/cons/copy_neg.cc: Same. * testsuite/29_atomics/atomic_integral/cons/assign_neg.cc: Same. * testsuite/29_atomics/atomic_integral/cons/copy_neg.cc: Same. * testsuite/29_atomics/atomic_integral/operators/bitwise_neg.cc: Same. * include/bits/allocator.h: Add constexpr as per N3126 draft. * include/bits/ios_base.h: Same. * include/bits/shared_ptr.h: Same. * include/bits/unique_ptr.h: Same. * include/bits/stl_iterator.h: Same. * include/bits/stl_pair.h: Same. * include/std/tuple: Same. * include/tr1_impl/type_traits: Same. * include/std/chrono: Same. * include/std/ratio: Same. * include/std/mutex: Same. * src/mutex.cc: Same. * testsuite/20_util/duration/requirements/typedefs_neg1.cc: Adjust. * testsuite/20_util/duration/requirements/typedefs_neg2.cc: Same. * testsuite/20_util/duration/requirements/typedefs_neg3.cc: Same. * testsuite/20_util/weak_ptr/comparison/cmp_neg.cc: Same. * testsuite/27_io/ios_base/cons/assign_neg.cc: Same. * testsuite/27_io/ios_base/cons/copy_neg.cc: Same. * doc/doxygen/user.cfg.in: Replace _GLIBCXX_USE_CONSTEXPR, _GLIBCXX_CONSTEXPR for doxygen generation. * src/limits.cc: Undef. * testsuite/29_atomics/atomic/cons/constexpr.cc: Adjust. * testsuite/29_atomics/atomic_address/cons/constexpr.cc: Same. * testsuite/29_atomics/atomic_integral/cons/constexpr.cc: Same. * testsuite/29_atomics/atomic_integral/operators/bitwise_neg.c: Same. * testsuite/18_support/numeric_limits/constexpr.cc: To... * testsuite/18_support/numeric_limits/requirements/ constexpr_data.cc, constexpr_functions.cc: ...this * testsuite/util/testsuite_common_types.h (constexpr_single_value_constructible): Add. * testsuite/29_atomics/atomic/cons/constexpr.cc: Adjust name. * testsuite/29_atomics/atomic_integral/cons/constexpr.cc: Same. * testsuite/29_atomics/atomic_address/cons/constexpr.cc: New. * testsuite/18_support/numeric_limits/constexpr.cc: New. * testsuite/29_atomics/atomic/cons/assign_neg.cc: Adjust line numbers. * testsuite/29_atomics/atomic/cons/constexpr.cc: Same. * testsuite/29_atomics/atomic/cons/copy_neg.cc: Same. * testsuite/29_atomics/atomic_integral/cons/assign_neg.cc: Same. * testsuite/29_atomics/atomic_integral/cons/constexpr.cc: Same. * testsuite/29_atomics/atomic_integral/cons/copy_neg.cc: Same. * testsuite/29_atomics/atomic_integral/operators/bitwise_neg.cc: Same. * testsuite/29_atomics/atomic_integral/operators/decrement_neg.cc: Same. * testsuite/29_atomics/atomic_integral/operators/increment_neg.cc: Same. * include/bits/c++config (_GLIBCXX_CONSTEXPR): Add. (_GLIBCXX_USE_CONSTEXPR): Add. * include/std/limits: Use it. * src/limits.cc: Adjust. * testsuite/ext/profile/mutex_extensions.cc: Change line number. * include/bits/atomic_0.h: Rework for N3126 draft, add constexpr. * include/bits/atomic_2.h: Same. * include/bits/atomic_base.h: Same. * include/std/atomic: Same. * src/atomic.cc: Same. * include/bits/atomicfwd_c.h: Remove. * include/bits/atomicfwd_cxx.h: Remove. * include/c_compatibility/stdatomic.h: Remove. * include/Makefile.am: Remove atomicfwd_c.h, atomicfwd_cxx.h, stdatomic.h. * include/Makefile.in: Regenerate. * doc/xml/manual/using.xml: Update list of header files for changes. * testsuite/util/testsuite_common_types.h (constexpr_constructible): Add. * testsuite/29_atomics/atomic/cons/constexpr.cc: New. * testsuite/29_atomics/atomic_integral/cons/constexpr.cc: New. * testsuite/17_intro/headers/c++200x/stdc++.cc: Modify. * testsuite/29_atomics/atomic/cons/assign_neg.cc: Same. * testsuite/29_atomics/atomic_address/cons/assign_neg.cc: Same. * testsuite/29_atomics/atomic_flag/cons/1.cc: Same. * testsuite/29_atomics/atomic_integral/cons/assign_neg.cc: Same. * testsuite/29_atomics/headers/atomic/macros.cc: Same. * testsuite/29_atomics/headers/atomic/types_std_c++0x.cc: Same. * testsuite/29_atomics/headers/atomic/types_std_c++0x_neg.cc: Same. * testsuite/29_atomics/atomic_flag/test_and_set/implicit.c: Remove. * testsuite/29_atomics/atomic_flag/test_and_set/explicit.c: Same. * testsuite/29_atomics/atomic_flag/clear/1.c: Same. * testsuite/29_atomics/headers/stdatomic.h/debug_mode.c: Same. * testsuite/29_atomics/headers/stdatomic.h/functions.c: Same. * testsuite/29_atomics/headers/stdatomic.h/macros.c: Same. * testsuite/29_atomics/headers/stdatomic.h/types.c: Same. * testsuite/util/testsuite_abi.cc: Add GLIBCXX_3.4.16. From-SVN: r166171
2010-11-02 03:35:28 +01:00
#endif
mutex() noexcept = default;
~mutex() = default;
condition_variable: New. 2008-05-06 Benjamin Kosnik <bkoz@redhat.com> * include/std/condition_variable: New. * include/std/mutex: New. * src/condition_variable.cc: New. * src/mutex.cc: New. * include/bits/functexcept.h: Add __throw_system_error varients. * src/functexcept.cc: Same. * config/abi/pre/gnu.ver: Add exports. * doc/xml/manual/using.xml: Add new includes. * doc/doxygen/user.cfg.in: Doxygen support. * doc/doxygen/doxygroups.cc: Same. * include/Makefile.am: Add mutex, condition_variable. * include/Makefile.in: Regenerated. * src/Makefile.am: Add mutex.cc, condition_variable.cc. * src/Makefile.in: Regenerated. * testsuite/30_threads: New. * testsuite/30_threads/lock_error: New. * testsuite/30_threads/mutex: New. * testsuite/30_threads/mutex/dest: New. * testsuite/30_threads/mutex/dest/destructor_locked.cc: New. * testsuite/30_threads/mutex/native_handle: New. * testsuite/30_threads/mutex/native_handle/1.cc: New. * testsuite/30_threads/mutex/cons: New. * testsuite/30_threads/mutex/cons/assign_neg.cc: New. * testsuite/30_threads/mutex/cons/1.cc: New. * testsuite/30_threads/mutex/cons/copy_neg.cc: New. * testsuite/30_threads/mutex/requirements: New. * testsuite/30_threads/mutex/requirements/typedefs.cc: New. * testsuite/30_threads/mutex/try_lock: New. * testsuite/30_threads/mutex/try_lock/1.cc: New. * testsuite/30_threads/mutex/try_lock/2.cc: New. * testsuite/30_threads/mutex/lock: New. * testsuite/30_threads/mutex/lock/1.cc: New. * testsuite/30_threads/mutex/unlock: New. * testsuite/30_threads/mutex/unlock/1.cc: New. * testsuite/30_threads/recursive_mutex: New. * testsuite/30_threads/recursive_mutex/dest: New. * testsuite/30_threads/recursive_mutex/dest/destructor_locked.cc: New. * testsuite/30_threads/recursive_mutex/native_handle: New. * testsuite/30_threads/recursive_mutex/native_handle/1.cc: New. * testsuite/30_threads/recursive_mutex/cons: New. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: New. * testsuite/30_threads/recursive_mutex/cons/1.cc: New. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: New. * testsuite/30_threads/recursive_mutex/requirements: New. * testsuite/30_threads/recursive_mutex/requirements/typedefs.cc: New. * testsuite/30_threads/lock_guard: New. * testsuite/30_threads/lock_guard/requirements: New. * testsuite/30_threads/lock_guard/requirements/typedefs.cc: New. * testsuite/30_threads/lock_guard/requirements/ explicit_instantiation.cc: New. * testsuite/30_threads/headers: New. * testsuite/30_threads/headers/mutex: New. * testsuite/30_threads/headers/mutex/types_std_c++0x.cc: New. * testsuite/30_threads/headers/mutex/std_c++0x_neg.cc: New. * testsuite/30_threads/headers/condition_variable: New. * testsuite/30_threads/headers/condition_variable/ types_std_c++0x.cc: New. * testsuite/30_threads/headers/condition_variable/std_c++0x_neg.cc: New. * testsuite/30_threads/once_flag: New. * testsuite/30_threads/unique_lock: New. * testsuite/30_threads/unique_lock/requirements: New. * testsuite/30_threads/unique_lock/requirements/typedefs.cc: New. * testsuite/30_threads/unique_lock/requirements/ explicit_instantiation.cc: New. * testsuite/17_intro/headers/c++200x/all.cc: Add new includes. From-SVN: r135007
2008-05-06 23:11:47 +02:00
condition_variable: Use new deleted ctors. 2008-09-03 Chris Fairles <chris.fairles@gmail.com> * include/std/condition_variable: Use new deleted ctors. * include/std/mutex: Likewise plus implement timed_mutex, recursive_timed_mutex and call_once. * src/condition_variable.cc: Implement wait(). Use gthread types. Remove _GTHREADS_HAS_COND checks in favor of global _GLIBCXX_HAS_GTHREADS. * src/mutex.cc (call_once): Implementation using TLS with mutex fallback. * config/abi/pre/gnu.ver: Add exported symbols. * testsuite/lib/libstdc++.exp (check_v3_target_gthreads): New. * testsuite/lib/dg-options.exp (dg-require-gthreads): Likewise. * testsuite/30_threads/lock_guard/requirements/typedefs.cc: Use dg-require-gthreads and dg-require-cstdint. * testsuite/30_threads/lock_guard/requirements/ explicit_instantiation.cc: Likewise. * testsuite/30_threads/mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/mutex/cons/1.cc: Likewise. * testsuite/30_threads/mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/mutex/lock/1.cc: Likewise. * testsuite/30_threads/mutex/unlock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/recursive_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/recursive_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/recursive_mutex/lock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/unique_lock/requirements/ explicit_instantiation.cc: Likewise. * testsuite/30_threads/unique_lock/requirements/typedefs.cc: Likewise. * testsuite/30_threads/mutex/cons/assign_neg.cc: Also adjust dg-error lines for deleted members. * testsuite/30_threads/mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/call_once/once_flag.cc: New. * testsuite/30_threads/call_once/call_once1.cc: Likewise. * testsuite/30_threads/condition_variable/cons/1.cc: Likewise. * testsuite/30_threads/condition_variable/cons/copy_neg.cc: Likewise * testsuite/30_threads/condition_variable/cons/assign_neg.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/1.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/copy_neg.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/assign_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/timed_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_until/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_until/2.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/1.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/timed_mutex/lock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/2.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/3.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_until/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_until/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/lock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/lock/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/3.cc: Likewise. * testsuite/30_threads/unique_lock/modifiers/1.cc: Likewise. * testsuite/30_threads/unique_lock/modifiers/2.cc: Likewise. * testsuite/30_threads/unique_lock/cons/1.cc: Likewise. * testsuite/30_threads/unique_lock/cons/2.cc: Likewise. * testsuite/30_threads/unique_lock/cons/3.cc: Likewise. * testsuite/30_threads/unique_lock/cons/4.cc: Likewise. * testsuite/30_threads/unique_lock/cons/5.cc: Likewise. * testsuite/30_threads/unique_lock/cons/6.cc: Likewise. * testsuite/30_threads/unique_lock/locking/1.cc: Likewise. * testsuite/30_threads/unique_lock/locking/2.cc: Likewise. * testsuite/30_threads/unique_lock/locking/3.cc: Likewise. * testsuite/30_threads/unique_lock/locking/4.cc: Likewise. From-SVN: r139943
2008-09-03 19:46:09 +02:00
mutex(const mutex&) = delete;
mutex& operator=(const mutex&) = delete;
void
condition_variable: New. 2008-05-06 Benjamin Kosnik <bkoz@redhat.com> * include/std/condition_variable: New. * include/std/mutex: New. * src/condition_variable.cc: New. * src/mutex.cc: New. * include/bits/functexcept.h: Add __throw_system_error varients. * src/functexcept.cc: Same. * config/abi/pre/gnu.ver: Add exports. * doc/xml/manual/using.xml: Add new includes. * doc/doxygen/user.cfg.in: Doxygen support. * doc/doxygen/doxygroups.cc: Same. * include/Makefile.am: Add mutex, condition_variable. * include/Makefile.in: Regenerated. * src/Makefile.am: Add mutex.cc, condition_variable.cc. * src/Makefile.in: Regenerated. * testsuite/30_threads: New. * testsuite/30_threads/lock_error: New. * testsuite/30_threads/mutex: New. * testsuite/30_threads/mutex/dest: New. * testsuite/30_threads/mutex/dest/destructor_locked.cc: New. * testsuite/30_threads/mutex/native_handle: New. * testsuite/30_threads/mutex/native_handle/1.cc: New. * testsuite/30_threads/mutex/cons: New. * testsuite/30_threads/mutex/cons/assign_neg.cc: New. * testsuite/30_threads/mutex/cons/1.cc: New. * testsuite/30_threads/mutex/cons/copy_neg.cc: New. * testsuite/30_threads/mutex/requirements: New. * testsuite/30_threads/mutex/requirements/typedefs.cc: New. * testsuite/30_threads/mutex/try_lock: New. * testsuite/30_threads/mutex/try_lock/1.cc: New. * testsuite/30_threads/mutex/try_lock/2.cc: New. * testsuite/30_threads/mutex/lock: New. * testsuite/30_threads/mutex/lock/1.cc: New. * testsuite/30_threads/mutex/unlock: New. * testsuite/30_threads/mutex/unlock/1.cc: New. * testsuite/30_threads/recursive_mutex: New. * testsuite/30_threads/recursive_mutex/dest: New. * testsuite/30_threads/recursive_mutex/dest/destructor_locked.cc: New. * testsuite/30_threads/recursive_mutex/native_handle: New. * testsuite/30_threads/recursive_mutex/native_handle/1.cc: New. * testsuite/30_threads/recursive_mutex/cons: New. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: New. * testsuite/30_threads/recursive_mutex/cons/1.cc: New. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: New. * testsuite/30_threads/recursive_mutex/requirements: New. * testsuite/30_threads/recursive_mutex/requirements/typedefs.cc: New. * testsuite/30_threads/lock_guard: New. * testsuite/30_threads/lock_guard/requirements: New. * testsuite/30_threads/lock_guard/requirements/typedefs.cc: New. * testsuite/30_threads/lock_guard/requirements/ explicit_instantiation.cc: New. * testsuite/30_threads/headers: New. * testsuite/30_threads/headers/mutex: New. * testsuite/30_threads/headers/mutex/types_std_c++0x.cc: New. * testsuite/30_threads/headers/mutex/std_c++0x_neg.cc: New. * testsuite/30_threads/headers/condition_variable: New. * testsuite/30_threads/headers/condition_variable/ types_std_c++0x.cc: New. * testsuite/30_threads/headers/condition_variable/std_c++0x_neg.cc: New. * testsuite/30_threads/once_flag: New. * testsuite/30_threads/unique_lock: New. * testsuite/30_threads/unique_lock/requirements: New. * testsuite/30_threads/unique_lock/requirements/typedefs.cc: New. * testsuite/30_threads/unique_lock/requirements/ explicit_instantiation.cc: New. * testsuite/17_intro/headers/c++200x/all.cc: Add new includes. From-SVN: r135007
2008-05-06 23:11:47 +02:00
lock()
{
int __e = __gthread_mutex_lock(&_M_mutex);
// EINVAL, EAGAIN, EBUSY, EINVAL, EDEADLK(may)
if (__e)
__throw_system_error(__e);
condition_variable: New. 2008-05-06 Benjamin Kosnik <bkoz@redhat.com> * include/std/condition_variable: New. * include/std/mutex: New. * src/condition_variable.cc: New. * src/mutex.cc: New. * include/bits/functexcept.h: Add __throw_system_error varients. * src/functexcept.cc: Same. * config/abi/pre/gnu.ver: Add exports. * doc/xml/manual/using.xml: Add new includes. * doc/doxygen/user.cfg.in: Doxygen support. * doc/doxygen/doxygroups.cc: Same. * include/Makefile.am: Add mutex, condition_variable. * include/Makefile.in: Regenerated. * src/Makefile.am: Add mutex.cc, condition_variable.cc. * src/Makefile.in: Regenerated. * testsuite/30_threads: New. * testsuite/30_threads/lock_error: New. * testsuite/30_threads/mutex: New. * testsuite/30_threads/mutex/dest: New. * testsuite/30_threads/mutex/dest/destructor_locked.cc: New. * testsuite/30_threads/mutex/native_handle: New. * testsuite/30_threads/mutex/native_handle/1.cc: New. * testsuite/30_threads/mutex/cons: New. * testsuite/30_threads/mutex/cons/assign_neg.cc: New. * testsuite/30_threads/mutex/cons/1.cc: New. * testsuite/30_threads/mutex/cons/copy_neg.cc: New. * testsuite/30_threads/mutex/requirements: New. * testsuite/30_threads/mutex/requirements/typedefs.cc: New. * testsuite/30_threads/mutex/try_lock: New. * testsuite/30_threads/mutex/try_lock/1.cc: New. * testsuite/30_threads/mutex/try_lock/2.cc: New. * testsuite/30_threads/mutex/lock: New. * testsuite/30_threads/mutex/lock/1.cc: New. * testsuite/30_threads/mutex/unlock: New. * testsuite/30_threads/mutex/unlock/1.cc: New. * testsuite/30_threads/recursive_mutex: New. * testsuite/30_threads/recursive_mutex/dest: New. * testsuite/30_threads/recursive_mutex/dest/destructor_locked.cc: New. * testsuite/30_threads/recursive_mutex/native_handle: New. * testsuite/30_threads/recursive_mutex/native_handle/1.cc: New. * testsuite/30_threads/recursive_mutex/cons: New. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: New. * testsuite/30_threads/recursive_mutex/cons/1.cc: New. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: New. * testsuite/30_threads/recursive_mutex/requirements: New. * testsuite/30_threads/recursive_mutex/requirements/typedefs.cc: New. * testsuite/30_threads/lock_guard: New. * testsuite/30_threads/lock_guard/requirements: New. * testsuite/30_threads/lock_guard/requirements/typedefs.cc: New. * testsuite/30_threads/lock_guard/requirements/ explicit_instantiation.cc: New. * testsuite/30_threads/headers: New. * testsuite/30_threads/headers/mutex: New. * testsuite/30_threads/headers/mutex/types_std_c++0x.cc: New. * testsuite/30_threads/headers/mutex/std_c++0x_neg.cc: New. * testsuite/30_threads/headers/condition_variable: New. * testsuite/30_threads/headers/condition_variable/ types_std_c++0x.cc: New. * testsuite/30_threads/headers/condition_variable/std_c++0x_neg.cc: New. * testsuite/30_threads/once_flag: New. * testsuite/30_threads/unique_lock: New. * testsuite/30_threads/unique_lock/requirements: New. * testsuite/30_threads/unique_lock/requirements/typedefs.cc: New. * testsuite/30_threads/unique_lock/requirements/ explicit_instantiation.cc: New. * testsuite/17_intro/headers/c++200x/all.cc: Add new includes. From-SVN: r135007
2008-05-06 23:11:47 +02:00
}
bool
try_lock() noexcept
condition_variable: New. 2008-05-06 Benjamin Kosnik <bkoz@redhat.com> * include/std/condition_variable: New. * include/std/mutex: New. * src/condition_variable.cc: New. * src/mutex.cc: New. * include/bits/functexcept.h: Add __throw_system_error varients. * src/functexcept.cc: Same. * config/abi/pre/gnu.ver: Add exports. * doc/xml/manual/using.xml: Add new includes. * doc/doxygen/user.cfg.in: Doxygen support. * doc/doxygen/doxygroups.cc: Same. * include/Makefile.am: Add mutex, condition_variable. * include/Makefile.in: Regenerated. * src/Makefile.am: Add mutex.cc, condition_variable.cc. * src/Makefile.in: Regenerated. * testsuite/30_threads: New. * testsuite/30_threads/lock_error: New. * testsuite/30_threads/mutex: New. * testsuite/30_threads/mutex/dest: New. * testsuite/30_threads/mutex/dest/destructor_locked.cc: New. * testsuite/30_threads/mutex/native_handle: New. * testsuite/30_threads/mutex/native_handle/1.cc: New. * testsuite/30_threads/mutex/cons: New. * testsuite/30_threads/mutex/cons/assign_neg.cc: New. * testsuite/30_threads/mutex/cons/1.cc: New. * testsuite/30_threads/mutex/cons/copy_neg.cc: New. * testsuite/30_threads/mutex/requirements: New. * testsuite/30_threads/mutex/requirements/typedefs.cc: New. * testsuite/30_threads/mutex/try_lock: New. * testsuite/30_threads/mutex/try_lock/1.cc: New. * testsuite/30_threads/mutex/try_lock/2.cc: New. * testsuite/30_threads/mutex/lock: New. * testsuite/30_threads/mutex/lock/1.cc: New. * testsuite/30_threads/mutex/unlock: New. * testsuite/30_threads/mutex/unlock/1.cc: New. * testsuite/30_threads/recursive_mutex: New. * testsuite/30_threads/recursive_mutex/dest: New. * testsuite/30_threads/recursive_mutex/dest/destructor_locked.cc: New. * testsuite/30_threads/recursive_mutex/native_handle: New. * testsuite/30_threads/recursive_mutex/native_handle/1.cc: New. * testsuite/30_threads/recursive_mutex/cons: New. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: New. * testsuite/30_threads/recursive_mutex/cons/1.cc: New. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: New. * testsuite/30_threads/recursive_mutex/requirements: New. * testsuite/30_threads/recursive_mutex/requirements/typedefs.cc: New. * testsuite/30_threads/lock_guard: New. * testsuite/30_threads/lock_guard/requirements: New. * testsuite/30_threads/lock_guard/requirements/typedefs.cc: New. * testsuite/30_threads/lock_guard/requirements/ explicit_instantiation.cc: New. * testsuite/30_threads/headers: New. * testsuite/30_threads/headers/mutex: New. * testsuite/30_threads/headers/mutex/types_std_c++0x.cc: New. * testsuite/30_threads/headers/mutex/std_c++0x_neg.cc: New. * testsuite/30_threads/headers/condition_variable: New. * testsuite/30_threads/headers/condition_variable/ types_std_c++0x.cc: New. * testsuite/30_threads/headers/condition_variable/std_c++0x_neg.cc: New. * testsuite/30_threads/once_flag: New. * testsuite/30_threads/unique_lock: New. * testsuite/30_threads/unique_lock/requirements: New. * testsuite/30_threads/unique_lock/requirements/typedefs.cc: New. * testsuite/30_threads/unique_lock/requirements/ explicit_instantiation.cc: New. * testsuite/17_intro/headers/c++200x/all.cc: Add new includes. From-SVN: r135007
2008-05-06 23:11:47 +02:00
{
// XXX EINVAL, EAGAIN, EBUSY
return !__gthread_mutex_trylock(&_M_mutex);
condition_variable: New. 2008-05-06 Benjamin Kosnik <bkoz@redhat.com> * include/std/condition_variable: New. * include/std/mutex: New. * src/condition_variable.cc: New. * src/mutex.cc: New. * include/bits/functexcept.h: Add __throw_system_error varients. * src/functexcept.cc: Same. * config/abi/pre/gnu.ver: Add exports. * doc/xml/manual/using.xml: Add new includes. * doc/doxygen/user.cfg.in: Doxygen support. * doc/doxygen/doxygroups.cc: Same. * include/Makefile.am: Add mutex, condition_variable. * include/Makefile.in: Regenerated. * src/Makefile.am: Add mutex.cc, condition_variable.cc. * src/Makefile.in: Regenerated. * testsuite/30_threads: New. * testsuite/30_threads/lock_error: New. * testsuite/30_threads/mutex: New. * testsuite/30_threads/mutex/dest: New. * testsuite/30_threads/mutex/dest/destructor_locked.cc: New. * testsuite/30_threads/mutex/native_handle: New. * testsuite/30_threads/mutex/native_handle/1.cc: New. * testsuite/30_threads/mutex/cons: New. * testsuite/30_threads/mutex/cons/assign_neg.cc: New. * testsuite/30_threads/mutex/cons/1.cc: New. * testsuite/30_threads/mutex/cons/copy_neg.cc: New. * testsuite/30_threads/mutex/requirements: New. * testsuite/30_threads/mutex/requirements/typedefs.cc: New. * testsuite/30_threads/mutex/try_lock: New. * testsuite/30_threads/mutex/try_lock/1.cc: New. * testsuite/30_threads/mutex/try_lock/2.cc: New. * testsuite/30_threads/mutex/lock: New. * testsuite/30_threads/mutex/lock/1.cc: New. * testsuite/30_threads/mutex/unlock: New. * testsuite/30_threads/mutex/unlock/1.cc: New. * testsuite/30_threads/recursive_mutex: New. * testsuite/30_threads/recursive_mutex/dest: New. * testsuite/30_threads/recursive_mutex/dest/destructor_locked.cc: New. * testsuite/30_threads/recursive_mutex/native_handle: New. * testsuite/30_threads/recursive_mutex/native_handle/1.cc: New. * testsuite/30_threads/recursive_mutex/cons: New. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: New. * testsuite/30_threads/recursive_mutex/cons/1.cc: New. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: New. * testsuite/30_threads/recursive_mutex/requirements: New. * testsuite/30_threads/recursive_mutex/requirements/typedefs.cc: New. * testsuite/30_threads/lock_guard: New. * testsuite/30_threads/lock_guard/requirements: New. * testsuite/30_threads/lock_guard/requirements/typedefs.cc: New. * testsuite/30_threads/lock_guard/requirements/ explicit_instantiation.cc: New. * testsuite/30_threads/headers: New. * testsuite/30_threads/headers/mutex: New. * testsuite/30_threads/headers/mutex/types_std_c++0x.cc: New. * testsuite/30_threads/headers/mutex/std_c++0x_neg.cc: New. * testsuite/30_threads/headers/condition_variable: New. * testsuite/30_threads/headers/condition_variable/ types_std_c++0x.cc: New. * testsuite/30_threads/headers/condition_variable/std_c++0x_neg.cc: New. * testsuite/30_threads/once_flag: New. * testsuite/30_threads/unique_lock: New. * testsuite/30_threads/unique_lock/requirements: New. * testsuite/30_threads/unique_lock/requirements/typedefs.cc: New. * testsuite/30_threads/unique_lock/requirements/ explicit_instantiation.cc: New. * testsuite/17_intro/headers/c++200x/all.cc: Add new includes. From-SVN: r135007
2008-05-06 23:11:47 +02:00
}
void
condition_variable: New. 2008-05-06 Benjamin Kosnik <bkoz@redhat.com> * include/std/condition_variable: New. * include/std/mutex: New. * src/condition_variable.cc: New. * src/mutex.cc: New. * include/bits/functexcept.h: Add __throw_system_error varients. * src/functexcept.cc: Same. * config/abi/pre/gnu.ver: Add exports. * doc/xml/manual/using.xml: Add new includes. * doc/doxygen/user.cfg.in: Doxygen support. * doc/doxygen/doxygroups.cc: Same. * include/Makefile.am: Add mutex, condition_variable. * include/Makefile.in: Regenerated. * src/Makefile.am: Add mutex.cc, condition_variable.cc. * src/Makefile.in: Regenerated. * testsuite/30_threads: New. * testsuite/30_threads/lock_error: New. * testsuite/30_threads/mutex: New. * testsuite/30_threads/mutex/dest: New. * testsuite/30_threads/mutex/dest/destructor_locked.cc: New. * testsuite/30_threads/mutex/native_handle: New. * testsuite/30_threads/mutex/native_handle/1.cc: New. * testsuite/30_threads/mutex/cons: New. * testsuite/30_threads/mutex/cons/assign_neg.cc: New. * testsuite/30_threads/mutex/cons/1.cc: New. * testsuite/30_threads/mutex/cons/copy_neg.cc: New. * testsuite/30_threads/mutex/requirements: New. * testsuite/30_threads/mutex/requirements/typedefs.cc: New. * testsuite/30_threads/mutex/try_lock: New. * testsuite/30_threads/mutex/try_lock/1.cc: New. * testsuite/30_threads/mutex/try_lock/2.cc: New. * testsuite/30_threads/mutex/lock: New. * testsuite/30_threads/mutex/lock/1.cc: New. * testsuite/30_threads/mutex/unlock: New. * testsuite/30_threads/mutex/unlock/1.cc: New. * testsuite/30_threads/recursive_mutex: New. * testsuite/30_threads/recursive_mutex/dest: New. * testsuite/30_threads/recursive_mutex/dest/destructor_locked.cc: New. * testsuite/30_threads/recursive_mutex/native_handle: New. * testsuite/30_threads/recursive_mutex/native_handle/1.cc: New. * testsuite/30_threads/recursive_mutex/cons: New. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: New. * testsuite/30_threads/recursive_mutex/cons/1.cc: New. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: New. * testsuite/30_threads/recursive_mutex/requirements: New. * testsuite/30_threads/recursive_mutex/requirements/typedefs.cc: New. * testsuite/30_threads/lock_guard: New. * testsuite/30_threads/lock_guard/requirements: New. * testsuite/30_threads/lock_guard/requirements/typedefs.cc: New. * testsuite/30_threads/lock_guard/requirements/ explicit_instantiation.cc: New. * testsuite/30_threads/headers: New. * testsuite/30_threads/headers/mutex: New. * testsuite/30_threads/headers/mutex/types_std_c++0x.cc: New. * testsuite/30_threads/headers/mutex/std_c++0x_neg.cc: New. * testsuite/30_threads/headers/condition_variable: New. * testsuite/30_threads/headers/condition_variable/ types_std_c++0x.cc: New. * testsuite/30_threads/headers/condition_variable/std_c++0x_neg.cc: New. * testsuite/30_threads/once_flag: New. * testsuite/30_threads/unique_lock: New. * testsuite/30_threads/unique_lock/requirements: New. * testsuite/30_threads/unique_lock/requirements/typedefs.cc: New. * testsuite/30_threads/unique_lock/requirements/ explicit_instantiation.cc: New. * testsuite/17_intro/headers/c++200x/all.cc: Add new includes. From-SVN: r135007
2008-05-06 23:11:47 +02:00
unlock()
{
// XXX EINVAL, EAGAIN, EPERM
__gthread_mutex_unlock(&_M_mutex);
condition_variable: New. 2008-05-06 Benjamin Kosnik <bkoz@redhat.com> * include/std/condition_variable: New. * include/std/mutex: New. * src/condition_variable.cc: New. * src/mutex.cc: New. * include/bits/functexcept.h: Add __throw_system_error varients. * src/functexcept.cc: Same. * config/abi/pre/gnu.ver: Add exports. * doc/xml/manual/using.xml: Add new includes. * doc/doxygen/user.cfg.in: Doxygen support. * doc/doxygen/doxygroups.cc: Same. * include/Makefile.am: Add mutex, condition_variable. * include/Makefile.in: Regenerated. * src/Makefile.am: Add mutex.cc, condition_variable.cc. * src/Makefile.in: Regenerated. * testsuite/30_threads: New. * testsuite/30_threads/lock_error: New. * testsuite/30_threads/mutex: New. * testsuite/30_threads/mutex/dest: New. * testsuite/30_threads/mutex/dest/destructor_locked.cc: New. * testsuite/30_threads/mutex/native_handle: New. * testsuite/30_threads/mutex/native_handle/1.cc: New. * testsuite/30_threads/mutex/cons: New. * testsuite/30_threads/mutex/cons/assign_neg.cc: New. * testsuite/30_threads/mutex/cons/1.cc: New. * testsuite/30_threads/mutex/cons/copy_neg.cc: New. * testsuite/30_threads/mutex/requirements: New. * testsuite/30_threads/mutex/requirements/typedefs.cc: New. * testsuite/30_threads/mutex/try_lock: New. * testsuite/30_threads/mutex/try_lock/1.cc: New. * testsuite/30_threads/mutex/try_lock/2.cc: New. * testsuite/30_threads/mutex/lock: New. * testsuite/30_threads/mutex/lock/1.cc: New. * testsuite/30_threads/mutex/unlock: New. * testsuite/30_threads/mutex/unlock/1.cc: New. * testsuite/30_threads/recursive_mutex: New. * testsuite/30_threads/recursive_mutex/dest: New. * testsuite/30_threads/recursive_mutex/dest/destructor_locked.cc: New. * testsuite/30_threads/recursive_mutex/native_handle: New. * testsuite/30_threads/recursive_mutex/native_handle/1.cc: New. * testsuite/30_threads/recursive_mutex/cons: New. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: New. * testsuite/30_threads/recursive_mutex/cons/1.cc: New. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: New. * testsuite/30_threads/recursive_mutex/requirements: New. * testsuite/30_threads/recursive_mutex/requirements/typedefs.cc: New. * testsuite/30_threads/lock_guard: New. * testsuite/30_threads/lock_guard/requirements: New. * testsuite/30_threads/lock_guard/requirements/typedefs.cc: New. * testsuite/30_threads/lock_guard/requirements/ explicit_instantiation.cc: New. * testsuite/30_threads/headers: New. * testsuite/30_threads/headers/mutex: New. * testsuite/30_threads/headers/mutex/types_std_c++0x.cc: New. * testsuite/30_threads/headers/mutex/std_c++0x_neg.cc: New. * testsuite/30_threads/headers/condition_variable: New. * testsuite/30_threads/headers/condition_variable/ types_std_c++0x.cc: New. * testsuite/30_threads/headers/condition_variable/std_c++0x_neg.cc: New. * testsuite/30_threads/once_flag: New. * testsuite/30_threads/unique_lock: New. * testsuite/30_threads/unique_lock/requirements: New. * testsuite/30_threads/unique_lock/requirements/typedefs.cc: New. * testsuite/30_threads/unique_lock/requirements/ explicit_instantiation.cc: New. * testsuite/17_intro/headers/c++200x/all.cc: Add new includes. From-SVN: r135007
2008-05-06 23:11:47 +02:00
}
native_handle_type
condition_variable: New. 2008-05-06 Benjamin Kosnik <bkoz@redhat.com> * include/std/condition_variable: New. * include/std/mutex: New. * src/condition_variable.cc: New. * src/mutex.cc: New. * include/bits/functexcept.h: Add __throw_system_error varients. * src/functexcept.cc: Same. * config/abi/pre/gnu.ver: Add exports. * doc/xml/manual/using.xml: Add new includes. * doc/doxygen/user.cfg.in: Doxygen support. * doc/doxygen/doxygroups.cc: Same. * include/Makefile.am: Add mutex, condition_variable. * include/Makefile.in: Regenerated. * src/Makefile.am: Add mutex.cc, condition_variable.cc. * src/Makefile.in: Regenerated. * testsuite/30_threads: New. * testsuite/30_threads/lock_error: New. * testsuite/30_threads/mutex: New. * testsuite/30_threads/mutex/dest: New. * testsuite/30_threads/mutex/dest/destructor_locked.cc: New. * testsuite/30_threads/mutex/native_handle: New. * testsuite/30_threads/mutex/native_handle/1.cc: New. * testsuite/30_threads/mutex/cons: New. * testsuite/30_threads/mutex/cons/assign_neg.cc: New. * testsuite/30_threads/mutex/cons/1.cc: New. * testsuite/30_threads/mutex/cons/copy_neg.cc: New. * testsuite/30_threads/mutex/requirements: New. * testsuite/30_threads/mutex/requirements/typedefs.cc: New. * testsuite/30_threads/mutex/try_lock: New. * testsuite/30_threads/mutex/try_lock/1.cc: New. * testsuite/30_threads/mutex/try_lock/2.cc: New. * testsuite/30_threads/mutex/lock: New. * testsuite/30_threads/mutex/lock/1.cc: New. * testsuite/30_threads/mutex/unlock: New. * testsuite/30_threads/mutex/unlock/1.cc: New. * testsuite/30_threads/recursive_mutex: New. * testsuite/30_threads/recursive_mutex/dest: New. * testsuite/30_threads/recursive_mutex/dest/destructor_locked.cc: New. * testsuite/30_threads/recursive_mutex/native_handle: New. * testsuite/30_threads/recursive_mutex/native_handle/1.cc: New. * testsuite/30_threads/recursive_mutex/cons: New. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: New. * testsuite/30_threads/recursive_mutex/cons/1.cc: New. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: New. * testsuite/30_threads/recursive_mutex/requirements: New. * testsuite/30_threads/recursive_mutex/requirements/typedefs.cc: New. * testsuite/30_threads/lock_guard: New. * testsuite/30_threads/lock_guard/requirements: New. * testsuite/30_threads/lock_guard/requirements/typedefs.cc: New. * testsuite/30_threads/lock_guard/requirements/ explicit_instantiation.cc: New. * testsuite/30_threads/headers: New. * testsuite/30_threads/headers/mutex: New. * testsuite/30_threads/headers/mutex/types_std_c++0x.cc: New. * testsuite/30_threads/headers/mutex/std_c++0x_neg.cc: New. * testsuite/30_threads/headers/condition_variable: New. * testsuite/30_threads/headers/condition_variable/ types_std_c++0x.cc: New. * testsuite/30_threads/headers/condition_variable/std_c++0x_neg.cc: New. * testsuite/30_threads/once_flag: New. * testsuite/30_threads/unique_lock: New. * testsuite/30_threads/unique_lock/requirements: New. * testsuite/30_threads/unique_lock/requirements/typedefs.cc: New. * testsuite/30_threads/unique_lock/requirements/ explicit_instantiation.cc: New. * testsuite/17_intro/headers/c++200x/all.cc: Add new includes. From-SVN: r135007
2008-05-06 23:11:47 +02:00
native_handle()
condition_variable: Use new deleted ctors. 2008-09-03 Chris Fairles <chris.fairles@gmail.com> * include/std/condition_variable: Use new deleted ctors. * include/std/mutex: Likewise plus implement timed_mutex, recursive_timed_mutex and call_once. * src/condition_variable.cc: Implement wait(). Use gthread types. Remove _GTHREADS_HAS_COND checks in favor of global _GLIBCXX_HAS_GTHREADS. * src/mutex.cc (call_once): Implementation using TLS with mutex fallback. * config/abi/pre/gnu.ver: Add exported symbols. * testsuite/lib/libstdc++.exp (check_v3_target_gthreads): New. * testsuite/lib/dg-options.exp (dg-require-gthreads): Likewise. * testsuite/30_threads/lock_guard/requirements/typedefs.cc: Use dg-require-gthreads and dg-require-cstdint. * testsuite/30_threads/lock_guard/requirements/ explicit_instantiation.cc: Likewise. * testsuite/30_threads/mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/mutex/cons/1.cc: Likewise. * testsuite/30_threads/mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/mutex/lock/1.cc: Likewise. * testsuite/30_threads/mutex/unlock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/recursive_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/recursive_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/recursive_mutex/lock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/unique_lock/requirements/ explicit_instantiation.cc: Likewise. * testsuite/30_threads/unique_lock/requirements/typedefs.cc: Likewise. * testsuite/30_threads/mutex/cons/assign_neg.cc: Also adjust dg-error lines for deleted members. * testsuite/30_threads/mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/call_once/once_flag.cc: New. * testsuite/30_threads/call_once/call_once1.cc: Likewise. * testsuite/30_threads/condition_variable/cons/1.cc: Likewise. * testsuite/30_threads/condition_variable/cons/copy_neg.cc: Likewise * testsuite/30_threads/condition_variable/cons/assign_neg.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/1.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/copy_neg.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/assign_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/timed_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_until/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_until/2.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/1.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/timed_mutex/lock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/2.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/3.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_until/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_until/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/lock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/lock/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/3.cc: Likewise. * testsuite/30_threads/unique_lock/modifiers/1.cc: Likewise. * testsuite/30_threads/unique_lock/modifiers/2.cc: Likewise. * testsuite/30_threads/unique_lock/cons/1.cc: Likewise. * testsuite/30_threads/unique_lock/cons/2.cc: Likewise. * testsuite/30_threads/unique_lock/cons/3.cc: Likewise. * testsuite/30_threads/unique_lock/cons/4.cc: Likewise. * testsuite/30_threads/unique_lock/cons/5.cc: Likewise. * testsuite/30_threads/unique_lock/cons/6.cc: Likewise. * testsuite/30_threads/unique_lock/locking/1.cc: Likewise. * testsuite/30_threads/unique_lock/locking/2.cc: Likewise. * testsuite/30_threads/unique_lock/locking/3.cc: Likewise. * testsuite/30_threads/unique_lock/locking/4.cc: Likewise. From-SVN: r139943
2008-09-03 19:46:09 +02:00
{ return &_M_mutex; }
condition_variable: New. 2008-05-06 Benjamin Kosnik <bkoz@redhat.com> * include/std/condition_variable: New. * include/std/mutex: New. * src/condition_variable.cc: New. * src/mutex.cc: New. * include/bits/functexcept.h: Add __throw_system_error varients. * src/functexcept.cc: Same. * config/abi/pre/gnu.ver: Add exports. * doc/xml/manual/using.xml: Add new includes. * doc/doxygen/user.cfg.in: Doxygen support. * doc/doxygen/doxygroups.cc: Same. * include/Makefile.am: Add mutex, condition_variable. * include/Makefile.in: Regenerated. * src/Makefile.am: Add mutex.cc, condition_variable.cc. * src/Makefile.in: Regenerated. * testsuite/30_threads: New. * testsuite/30_threads/lock_error: New. * testsuite/30_threads/mutex: New. * testsuite/30_threads/mutex/dest: New. * testsuite/30_threads/mutex/dest/destructor_locked.cc: New. * testsuite/30_threads/mutex/native_handle: New. * testsuite/30_threads/mutex/native_handle/1.cc: New. * testsuite/30_threads/mutex/cons: New. * testsuite/30_threads/mutex/cons/assign_neg.cc: New. * testsuite/30_threads/mutex/cons/1.cc: New. * testsuite/30_threads/mutex/cons/copy_neg.cc: New. * testsuite/30_threads/mutex/requirements: New. * testsuite/30_threads/mutex/requirements/typedefs.cc: New. * testsuite/30_threads/mutex/try_lock: New. * testsuite/30_threads/mutex/try_lock/1.cc: New. * testsuite/30_threads/mutex/try_lock/2.cc: New. * testsuite/30_threads/mutex/lock: New. * testsuite/30_threads/mutex/lock/1.cc: New. * testsuite/30_threads/mutex/unlock: New. * testsuite/30_threads/mutex/unlock/1.cc: New. * testsuite/30_threads/recursive_mutex: New. * testsuite/30_threads/recursive_mutex/dest: New. * testsuite/30_threads/recursive_mutex/dest/destructor_locked.cc: New. * testsuite/30_threads/recursive_mutex/native_handle: New. * testsuite/30_threads/recursive_mutex/native_handle/1.cc: New. * testsuite/30_threads/recursive_mutex/cons: New. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: New. * testsuite/30_threads/recursive_mutex/cons/1.cc: New. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: New. * testsuite/30_threads/recursive_mutex/requirements: New. * testsuite/30_threads/recursive_mutex/requirements/typedefs.cc: New. * testsuite/30_threads/lock_guard: New. * testsuite/30_threads/lock_guard/requirements: New. * testsuite/30_threads/lock_guard/requirements/typedefs.cc: New. * testsuite/30_threads/lock_guard/requirements/ explicit_instantiation.cc: New. * testsuite/30_threads/headers: New. * testsuite/30_threads/headers/mutex: New. * testsuite/30_threads/headers/mutex/types_std_c++0x.cc: New. * testsuite/30_threads/headers/mutex/std_c++0x_neg.cc: New. * testsuite/30_threads/headers/condition_variable: New. * testsuite/30_threads/headers/condition_variable/ types_std_c++0x.cc: New. * testsuite/30_threads/headers/condition_variable/std_c++0x_neg.cc: New. * testsuite/30_threads/once_flag: New. * testsuite/30_threads/unique_lock: New. * testsuite/30_threads/unique_lock/requirements: New. * testsuite/30_threads/unique_lock/requirements/typedefs.cc: New. * testsuite/30_threads/unique_lock/requirements/ explicit_instantiation.cc: New. * testsuite/17_intro/headers/c++200x/all.cc: Add new includes. From-SVN: r135007
2008-05-06 23:11:47 +02:00
};
/// recursive_mutex
class recursive_mutex : private __recursive_mutex_base
condition_variable: New. 2008-05-06 Benjamin Kosnik <bkoz@redhat.com> * include/std/condition_variable: New. * include/std/mutex: New. * src/condition_variable.cc: New. * src/mutex.cc: New. * include/bits/functexcept.h: Add __throw_system_error varients. * src/functexcept.cc: Same. * config/abi/pre/gnu.ver: Add exports. * doc/xml/manual/using.xml: Add new includes. * doc/doxygen/user.cfg.in: Doxygen support. * doc/doxygen/doxygroups.cc: Same. * include/Makefile.am: Add mutex, condition_variable. * include/Makefile.in: Regenerated. * src/Makefile.am: Add mutex.cc, condition_variable.cc. * src/Makefile.in: Regenerated. * testsuite/30_threads: New. * testsuite/30_threads/lock_error: New. * testsuite/30_threads/mutex: New. * testsuite/30_threads/mutex/dest: New. * testsuite/30_threads/mutex/dest/destructor_locked.cc: New. * testsuite/30_threads/mutex/native_handle: New. * testsuite/30_threads/mutex/native_handle/1.cc: New. * testsuite/30_threads/mutex/cons: New. * testsuite/30_threads/mutex/cons/assign_neg.cc: New. * testsuite/30_threads/mutex/cons/1.cc: New. * testsuite/30_threads/mutex/cons/copy_neg.cc: New. * testsuite/30_threads/mutex/requirements: New. * testsuite/30_threads/mutex/requirements/typedefs.cc: New. * testsuite/30_threads/mutex/try_lock: New. * testsuite/30_threads/mutex/try_lock/1.cc: New. * testsuite/30_threads/mutex/try_lock/2.cc: New. * testsuite/30_threads/mutex/lock: New. * testsuite/30_threads/mutex/lock/1.cc: New. * testsuite/30_threads/mutex/unlock: New. * testsuite/30_threads/mutex/unlock/1.cc: New. * testsuite/30_threads/recursive_mutex: New. * testsuite/30_threads/recursive_mutex/dest: New. * testsuite/30_threads/recursive_mutex/dest/destructor_locked.cc: New. * testsuite/30_threads/recursive_mutex/native_handle: New. * testsuite/30_threads/recursive_mutex/native_handle/1.cc: New. * testsuite/30_threads/recursive_mutex/cons: New. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: New. * testsuite/30_threads/recursive_mutex/cons/1.cc: New. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: New. * testsuite/30_threads/recursive_mutex/requirements: New. * testsuite/30_threads/recursive_mutex/requirements/typedefs.cc: New. * testsuite/30_threads/lock_guard: New. * testsuite/30_threads/lock_guard/requirements: New. * testsuite/30_threads/lock_guard/requirements/typedefs.cc: New. * testsuite/30_threads/lock_guard/requirements/ explicit_instantiation.cc: New. * testsuite/30_threads/headers: New. * testsuite/30_threads/headers/mutex: New. * testsuite/30_threads/headers/mutex/types_std_c++0x.cc: New. * testsuite/30_threads/headers/mutex/std_c++0x_neg.cc: New. * testsuite/30_threads/headers/condition_variable: New. * testsuite/30_threads/headers/condition_variable/ types_std_c++0x.cc: New. * testsuite/30_threads/headers/condition_variable/std_c++0x_neg.cc: New. * testsuite/30_threads/once_flag: New. * testsuite/30_threads/unique_lock: New. * testsuite/30_threads/unique_lock/requirements: New. * testsuite/30_threads/unique_lock/requirements/typedefs.cc: New. * testsuite/30_threads/unique_lock/requirements/ explicit_instantiation.cc: New. * testsuite/17_intro/headers/c++200x/all.cc: Add new includes. From-SVN: r135007
2008-05-06 23:11:47 +02:00
{
public:
condition_variable (condition_variable): Remove _M_internal_mutex. 2009-02-09 Benjamin Kosnik <bkoz@redhat.com> * include/std/condition_variable (condition_variable): Remove _M_internal_mutex. Add private __native_type typedef. * src/condition_variable.cc (condition_variable::notify_one): Remove _M_internal_mutex use. Use typedef. (condition_variable::notify_all): Same. * include/std/mutex (mutex): Add private __native_type typedef. Use it. (recursive_mutex): Same. (timed_mutex): Same. (recursive_timed_mutex): Same. (once_flag): Make __native_type typedef private. * include/std/thread (this_thread): Add minimal markup. * testsuite/30_threads/condition_variable_any/cons/assign_neg.cc: Adjust line numbers. * testsuite/30_threads/condition_variable_any/cons/copy_neg.cc: Same. * testsuite/30_threads/mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/mutex/cons/copy_neg.cc: Same. * testsuite/30_threads/timed_mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/timed_mutex/cons/copy_neg.cc: Same. * testsuite/30_threads/thread/cons/assign_neg.cc: Same. * testsuite/30_threads/thread/cons/copy_neg.cc: Same. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: Same. * testsuite/30_threads/condition_variable/cons/assign_neg.cc: Same. * testsuite/30_threads/condition_variable/cons/copy_neg.cc: Same. * testsuite/30_threads/recursive_timed_mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/recursive_timed_mutex/cons/copy_neg.cc: Same. * testsuite/util/thread/all.h: Testsuite utilities for testing thread. * testsuite/30_threads/condition_variable_any/native_handle/ typesizes.cc: New. * testsuite/30_threads/mutex/native_handle/typesizes.cc: Same. * testsuite/30_threads/timed_mutex/native_handle/typesizes.cc: Same. * testsuite/30_threads/thread/native_handle/typesizes.cc: Same. * testsuite/30_threads/recursive_mutex/native_handle/typesizes.cc: Same. * testsuite/30_threads/condition_variable/native_handle/ typesizes.cc: Same. * testsuite/30_threads/recursive_timed_mutex/native_handle/ typesizes.cc: Same. From-SVN: r144053
2009-02-10 09:29:57 +01:00
typedef __native_type* native_handle_type;
condition_variable: New. 2008-05-06 Benjamin Kosnik <bkoz@redhat.com> * include/std/condition_variable: New. * include/std/mutex: New. * src/condition_variable.cc: New. * src/mutex.cc: New. * include/bits/functexcept.h: Add __throw_system_error varients. * src/functexcept.cc: Same. * config/abi/pre/gnu.ver: Add exports. * doc/xml/manual/using.xml: Add new includes. * doc/doxygen/user.cfg.in: Doxygen support. * doc/doxygen/doxygroups.cc: Same. * include/Makefile.am: Add mutex, condition_variable. * include/Makefile.in: Regenerated. * src/Makefile.am: Add mutex.cc, condition_variable.cc. * src/Makefile.in: Regenerated. * testsuite/30_threads: New. * testsuite/30_threads/lock_error: New. * testsuite/30_threads/mutex: New. * testsuite/30_threads/mutex/dest: New. * testsuite/30_threads/mutex/dest/destructor_locked.cc: New. * testsuite/30_threads/mutex/native_handle: New. * testsuite/30_threads/mutex/native_handle/1.cc: New. * testsuite/30_threads/mutex/cons: New. * testsuite/30_threads/mutex/cons/assign_neg.cc: New. * testsuite/30_threads/mutex/cons/1.cc: New. * testsuite/30_threads/mutex/cons/copy_neg.cc: New. * testsuite/30_threads/mutex/requirements: New. * testsuite/30_threads/mutex/requirements/typedefs.cc: New. * testsuite/30_threads/mutex/try_lock: New. * testsuite/30_threads/mutex/try_lock/1.cc: New. * testsuite/30_threads/mutex/try_lock/2.cc: New. * testsuite/30_threads/mutex/lock: New. * testsuite/30_threads/mutex/lock/1.cc: New. * testsuite/30_threads/mutex/unlock: New. * testsuite/30_threads/mutex/unlock/1.cc: New. * testsuite/30_threads/recursive_mutex: New. * testsuite/30_threads/recursive_mutex/dest: New. * testsuite/30_threads/recursive_mutex/dest/destructor_locked.cc: New. * testsuite/30_threads/recursive_mutex/native_handle: New. * testsuite/30_threads/recursive_mutex/native_handle/1.cc: New. * testsuite/30_threads/recursive_mutex/cons: New. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: New. * testsuite/30_threads/recursive_mutex/cons/1.cc: New. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: New. * testsuite/30_threads/recursive_mutex/requirements: New. * testsuite/30_threads/recursive_mutex/requirements/typedefs.cc: New. * testsuite/30_threads/lock_guard: New. * testsuite/30_threads/lock_guard/requirements: New. * testsuite/30_threads/lock_guard/requirements/typedefs.cc: New. * testsuite/30_threads/lock_guard/requirements/ explicit_instantiation.cc: New. * testsuite/30_threads/headers: New. * testsuite/30_threads/headers/mutex: New. * testsuite/30_threads/headers/mutex/types_std_c++0x.cc: New. * testsuite/30_threads/headers/mutex/std_c++0x_neg.cc: New. * testsuite/30_threads/headers/condition_variable: New. * testsuite/30_threads/headers/condition_variable/ types_std_c++0x.cc: New. * testsuite/30_threads/headers/condition_variable/std_c++0x_neg.cc: New. * testsuite/30_threads/once_flag: New. * testsuite/30_threads/unique_lock: New. * testsuite/30_threads/unique_lock/requirements: New. * testsuite/30_threads/unique_lock/requirements/typedefs.cc: New. * testsuite/30_threads/unique_lock/requirements/ explicit_instantiation.cc: New. * testsuite/17_intro/headers/c++200x/all.cc: Add new includes. From-SVN: r135007
2008-05-06 23:11:47 +02:00
recursive_mutex() = default;
~recursive_mutex() = default;
condition_variable: Use new deleted ctors. 2008-09-03 Chris Fairles <chris.fairles@gmail.com> * include/std/condition_variable: Use new deleted ctors. * include/std/mutex: Likewise plus implement timed_mutex, recursive_timed_mutex and call_once. * src/condition_variable.cc: Implement wait(). Use gthread types. Remove _GTHREADS_HAS_COND checks in favor of global _GLIBCXX_HAS_GTHREADS. * src/mutex.cc (call_once): Implementation using TLS with mutex fallback. * config/abi/pre/gnu.ver: Add exported symbols. * testsuite/lib/libstdc++.exp (check_v3_target_gthreads): New. * testsuite/lib/dg-options.exp (dg-require-gthreads): Likewise. * testsuite/30_threads/lock_guard/requirements/typedefs.cc: Use dg-require-gthreads and dg-require-cstdint. * testsuite/30_threads/lock_guard/requirements/ explicit_instantiation.cc: Likewise. * testsuite/30_threads/mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/mutex/cons/1.cc: Likewise. * testsuite/30_threads/mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/mutex/lock/1.cc: Likewise. * testsuite/30_threads/mutex/unlock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/recursive_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/recursive_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/recursive_mutex/lock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/unique_lock/requirements/ explicit_instantiation.cc: Likewise. * testsuite/30_threads/unique_lock/requirements/typedefs.cc: Likewise. * testsuite/30_threads/mutex/cons/assign_neg.cc: Also adjust dg-error lines for deleted members. * testsuite/30_threads/mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/call_once/once_flag.cc: New. * testsuite/30_threads/call_once/call_once1.cc: Likewise. * testsuite/30_threads/condition_variable/cons/1.cc: Likewise. * testsuite/30_threads/condition_variable/cons/copy_neg.cc: Likewise * testsuite/30_threads/condition_variable/cons/assign_neg.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/1.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/copy_neg.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/assign_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/timed_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_until/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_until/2.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/1.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/timed_mutex/lock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/2.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/3.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_until/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_until/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/lock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/lock/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/3.cc: Likewise. * testsuite/30_threads/unique_lock/modifiers/1.cc: Likewise. * testsuite/30_threads/unique_lock/modifiers/2.cc: Likewise. * testsuite/30_threads/unique_lock/cons/1.cc: Likewise. * testsuite/30_threads/unique_lock/cons/2.cc: Likewise. * testsuite/30_threads/unique_lock/cons/3.cc: Likewise. * testsuite/30_threads/unique_lock/cons/4.cc: Likewise. * testsuite/30_threads/unique_lock/cons/5.cc: Likewise. * testsuite/30_threads/unique_lock/cons/6.cc: Likewise. * testsuite/30_threads/unique_lock/locking/1.cc: Likewise. * testsuite/30_threads/unique_lock/locking/2.cc: Likewise. * testsuite/30_threads/unique_lock/locking/3.cc: Likewise. * testsuite/30_threads/unique_lock/locking/4.cc: Likewise. From-SVN: r139943
2008-09-03 19:46:09 +02:00
recursive_mutex(const recursive_mutex&) = delete;
recursive_mutex& operator=(const recursive_mutex&) = delete;
void
condition_variable: New. 2008-05-06 Benjamin Kosnik <bkoz@redhat.com> * include/std/condition_variable: New. * include/std/mutex: New. * src/condition_variable.cc: New. * src/mutex.cc: New. * include/bits/functexcept.h: Add __throw_system_error varients. * src/functexcept.cc: Same. * config/abi/pre/gnu.ver: Add exports. * doc/xml/manual/using.xml: Add new includes. * doc/doxygen/user.cfg.in: Doxygen support. * doc/doxygen/doxygroups.cc: Same. * include/Makefile.am: Add mutex, condition_variable. * include/Makefile.in: Regenerated. * src/Makefile.am: Add mutex.cc, condition_variable.cc. * src/Makefile.in: Regenerated. * testsuite/30_threads: New. * testsuite/30_threads/lock_error: New. * testsuite/30_threads/mutex: New. * testsuite/30_threads/mutex/dest: New. * testsuite/30_threads/mutex/dest/destructor_locked.cc: New. * testsuite/30_threads/mutex/native_handle: New. * testsuite/30_threads/mutex/native_handle/1.cc: New. * testsuite/30_threads/mutex/cons: New. * testsuite/30_threads/mutex/cons/assign_neg.cc: New. * testsuite/30_threads/mutex/cons/1.cc: New. * testsuite/30_threads/mutex/cons/copy_neg.cc: New. * testsuite/30_threads/mutex/requirements: New. * testsuite/30_threads/mutex/requirements/typedefs.cc: New. * testsuite/30_threads/mutex/try_lock: New. * testsuite/30_threads/mutex/try_lock/1.cc: New. * testsuite/30_threads/mutex/try_lock/2.cc: New. * testsuite/30_threads/mutex/lock: New. * testsuite/30_threads/mutex/lock/1.cc: New. * testsuite/30_threads/mutex/unlock: New. * testsuite/30_threads/mutex/unlock/1.cc: New. * testsuite/30_threads/recursive_mutex: New. * testsuite/30_threads/recursive_mutex/dest: New. * testsuite/30_threads/recursive_mutex/dest/destructor_locked.cc: New. * testsuite/30_threads/recursive_mutex/native_handle: New. * testsuite/30_threads/recursive_mutex/native_handle/1.cc: New. * testsuite/30_threads/recursive_mutex/cons: New. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: New. * testsuite/30_threads/recursive_mutex/cons/1.cc: New. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: New. * testsuite/30_threads/recursive_mutex/requirements: New. * testsuite/30_threads/recursive_mutex/requirements/typedefs.cc: New. * testsuite/30_threads/lock_guard: New. * testsuite/30_threads/lock_guard/requirements: New. * testsuite/30_threads/lock_guard/requirements/typedefs.cc: New. * testsuite/30_threads/lock_guard/requirements/ explicit_instantiation.cc: New. * testsuite/30_threads/headers: New. * testsuite/30_threads/headers/mutex: New. * testsuite/30_threads/headers/mutex/types_std_c++0x.cc: New. * testsuite/30_threads/headers/mutex/std_c++0x_neg.cc: New. * testsuite/30_threads/headers/condition_variable: New. * testsuite/30_threads/headers/condition_variable/ types_std_c++0x.cc: New. * testsuite/30_threads/headers/condition_variable/std_c++0x_neg.cc: New. * testsuite/30_threads/once_flag: New. * testsuite/30_threads/unique_lock: New. * testsuite/30_threads/unique_lock/requirements: New. * testsuite/30_threads/unique_lock/requirements/typedefs.cc: New. * testsuite/30_threads/unique_lock/requirements/ explicit_instantiation.cc: New. * testsuite/17_intro/headers/c++200x/all.cc: Add new includes. From-SVN: r135007
2008-05-06 23:11:47 +02:00
lock()
{
condition_variable: New. 2008-05-06 Benjamin Kosnik <bkoz@redhat.com> * include/std/condition_variable: New. * include/std/mutex: New. * src/condition_variable.cc: New. * src/mutex.cc: New. * include/bits/functexcept.h: Add __throw_system_error varients. * src/functexcept.cc: Same. * config/abi/pre/gnu.ver: Add exports. * doc/xml/manual/using.xml: Add new includes. * doc/doxygen/user.cfg.in: Doxygen support. * doc/doxygen/doxygroups.cc: Same. * include/Makefile.am: Add mutex, condition_variable. * include/Makefile.in: Regenerated. * src/Makefile.am: Add mutex.cc, condition_variable.cc. * src/Makefile.in: Regenerated. * testsuite/30_threads: New. * testsuite/30_threads/lock_error: New. * testsuite/30_threads/mutex: New. * testsuite/30_threads/mutex/dest: New. * testsuite/30_threads/mutex/dest/destructor_locked.cc: New. * testsuite/30_threads/mutex/native_handle: New. * testsuite/30_threads/mutex/native_handle/1.cc: New. * testsuite/30_threads/mutex/cons: New. * testsuite/30_threads/mutex/cons/assign_neg.cc: New. * testsuite/30_threads/mutex/cons/1.cc: New. * testsuite/30_threads/mutex/cons/copy_neg.cc: New. * testsuite/30_threads/mutex/requirements: New. * testsuite/30_threads/mutex/requirements/typedefs.cc: New. * testsuite/30_threads/mutex/try_lock: New. * testsuite/30_threads/mutex/try_lock/1.cc: New. * testsuite/30_threads/mutex/try_lock/2.cc: New. * testsuite/30_threads/mutex/lock: New. * testsuite/30_threads/mutex/lock/1.cc: New. * testsuite/30_threads/mutex/unlock: New. * testsuite/30_threads/mutex/unlock/1.cc: New. * testsuite/30_threads/recursive_mutex: New. * testsuite/30_threads/recursive_mutex/dest: New. * testsuite/30_threads/recursive_mutex/dest/destructor_locked.cc: New. * testsuite/30_threads/recursive_mutex/native_handle: New. * testsuite/30_threads/recursive_mutex/native_handle/1.cc: New. * testsuite/30_threads/recursive_mutex/cons: New. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: New. * testsuite/30_threads/recursive_mutex/cons/1.cc: New. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: New. * testsuite/30_threads/recursive_mutex/requirements: New. * testsuite/30_threads/recursive_mutex/requirements/typedefs.cc: New. * testsuite/30_threads/lock_guard: New. * testsuite/30_threads/lock_guard/requirements: New. * testsuite/30_threads/lock_guard/requirements/typedefs.cc: New. * testsuite/30_threads/lock_guard/requirements/ explicit_instantiation.cc: New. * testsuite/30_threads/headers: New. * testsuite/30_threads/headers/mutex: New. * testsuite/30_threads/headers/mutex/types_std_c++0x.cc: New. * testsuite/30_threads/headers/mutex/std_c++0x_neg.cc: New. * testsuite/30_threads/headers/condition_variable: New. * testsuite/30_threads/headers/condition_variable/ types_std_c++0x.cc: New. * testsuite/30_threads/headers/condition_variable/std_c++0x_neg.cc: New. * testsuite/30_threads/once_flag: New. * testsuite/30_threads/unique_lock: New. * testsuite/30_threads/unique_lock/requirements: New. * testsuite/30_threads/unique_lock/requirements/typedefs.cc: New. * testsuite/30_threads/unique_lock/requirements/ explicit_instantiation.cc: New. * testsuite/17_intro/headers/c++200x/all.cc: Add new includes. From-SVN: r135007
2008-05-06 23:11:47 +02:00
int __e = __gthread_recursive_mutex_lock(&_M_mutex);
// EINVAL, EAGAIN, EBUSY, EINVAL, EDEADLK(may)
if (__e)
__throw_system_error(__e);
condition_variable: New. 2008-05-06 Benjamin Kosnik <bkoz@redhat.com> * include/std/condition_variable: New. * include/std/mutex: New. * src/condition_variable.cc: New. * src/mutex.cc: New. * include/bits/functexcept.h: Add __throw_system_error varients. * src/functexcept.cc: Same. * config/abi/pre/gnu.ver: Add exports. * doc/xml/manual/using.xml: Add new includes. * doc/doxygen/user.cfg.in: Doxygen support. * doc/doxygen/doxygroups.cc: Same. * include/Makefile.am: Add mutex, condition_variable. * include/Makefile.in: Regenerated. * src/Makefile.am: Add mutex.cc, condition_variable.cc. * src/Makefile.in: Regenerated. * testsuite/30_threads: New. * testsuite/30_threads/lock_error: New. * testsuite/30_threads/mutex: New. * testsuite/30_threads/mutex/dest: New. * testsuite/30_threads/mutex/dest/destructor_locked.cc: New. * testsuite/30_threads/mutex/native_handle: New. * testsuite/30_threads/mutex/native_handle/1.cc: New. * testsuite/30_threads/mutex/cons: New. * testsuite/30_threads/mutex/cons/assign_neg.cc: New. * testsuite/30_threads/mutex/cons/1.cc: New. * testsuite/30_threads/mutex/cons/copy_neg.cc: New. * testsuite/30_threads/mutex/requirements: New. * testsuite/30_threads/mutex/requirements/typedefs.cc: New. * testsuite/30_threads/mutex/try_lock: New. * testsuite/30_threads/mutex/try_lock/1.cc: New. * testsuite/30_threads/mutex/try_lock/2.cc: New. * testsuite/30_threads/mutex/lock: New. * testsuite/30_threads/mutex/lock/1.cc: New. * testsuite/30_threads/mutex/unlock: New. * testsuite/30_threads/mutex/unlock/1.cc: New. * testsuite/30_threads/recursive_mutex: New. * testsuite/30_threads/recursive_mutex/dest: New. * testsuite/30_threads/recursive_mutex/dest/destructor_locked.cc: New. * testsuite/30_threads/recursive_mutex/native_handle: New. * testsuite/30_threads/recursive_mutex/native_handle/1.cc: New. * testsuite/30_threads/recursive_mutex/cons: New. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: New. * testsuite/30_threads/recursive_mutex/cons/1.cc: New. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: New. * testsuite/30_threads/recursive_mutex/requirements: New. * testsuite/30_threads/recursive_mutex/requirements/typedefs.cc: New. * testsuite/30_threads/lock_guard: New. * testsuite/30_threads/lock_guard/requirements: New. * testsuite/30_threads/lock_guard/requirements/typedefs.cc: New. * testsuite/30_threads/lock_guard/requirements/ explicit_instantiation.cc: New. * testsuite/30_threads/headers: New. * testsuite/30_threads/headers/mutex: New. * testsuite/30_threads/headers/mutex/types_std_c++0x.cc: New. * testsuite/30_threads/headers/mutex/std_c++0x_neg.cc: New. * testsuite/30_threads/headers/condition_variable: New. * testsuite/30_threads/headers/condition_variable/ types_std_c++0x.cc: New. * testsuite/30_threads/headers/condition_variable/std_c++0x_neg.cc: New. * testsuite/30_threads/once_flag: New. * testsuite/30_threads/unique_lock: New. * testsuite/30_threads/unique_lock/requirements: New. * testsuite/30_threads/unique_lock/requirements/typedefs.cc: New. * testsuite/30_threads/unique_lock/requirements/ explicit_instantiation.cc: New. * testsuite/17_intro/headers/c++200x/all.cc: Add new includes. From-SVN: r135007
2008-05-06 23:11:47 +02:00
}
bool
try_lock() noexcept
condition_variable: New. 2008-05-06 Benjamin Kosnik <bkoz@redhat.com> * include/std/condition_variable: New. * include/std/mutex: New. * src/condition_variable.cc: New. * src/mutex.cc: New. * include/bits/functexcept.h: Add __throw_system_error varients. * src/functexcept.cc: Same. * config/abi/pre/gnu.ver: Add exports. * doc/xml/manual/using.xml: Add new includes. * doc/doxygen/user.cfg.in: Doxygen support. * doc/doxygen/doxygroups.cc: Same. * include/Makefile.am: Add mutex, condition_variable. * include/Makefile.in: Regenerated. * src/Makefile.am: Add mutex.cc, condition_variable.cc. * src/Makefile.in: Regenerated. * testsuite/30_threads: New. * testsuite/30_threads/lock_error: New. * testsuite/30_threads/mutex: New. * testsuite/30_threads/mutex/dest: New. * testsuite/30_threads/mutex/dest/destructor_locked.cc: New. * testsuite/30_threads/mutex/native_handle: New. * testsuite/30_threads/mutex/native_handle/1.cc: New. * testsuite/30_threads/mutex/cons: New. * testsuite/30_threads/mutex/cons/assign_neg.cc: New. * testsuite/30_threads/mutex/cons/1.cc: New. * testsuite/30_threads/mutex/cons/copy_neg.cc: New. * testsuite/30_threads/mutex/requirements: New. * testsuite/30_threads/mutex/requirements/typedefs.cc: New. * testsuite/30_threads/mutex/try_lock: New. * testsuite/30_threads/mutex/try_lock/1.cc: New. * testsuite/30_threads/mutex/try_lock/2.cc: New. * testsuite/30_threads/mutex/lock: New. * testsuite/30_threads/mutex/lock/1.cc: New. * testsuite/30_threads/mutex/unlock: New. * testsuite/30_threads/mutex/unlock/1.cc: New. * testsuite/30_threads/recursive_mutex: New. * testsuite/30_threads/recursive_mutex/dest: New. * testsuite/30_threads/recursive_mutex/dest/destructor_locked.cc: New. * testsuite/30_threads/recursive_mutex/native_handle: New. * testsuite/30_threads/recursive_mutex/native_handle/1.cc: New. * testsuite/30_threads/recursive_mutex/cons: New. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: New. * testsuite/30_threads/recursive_mutex/cons/1.cc: New. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: New. * testsuite/30_threads/recursive_mutex/requirements: New. * testsuite/30_threads/recursive_mutex/requirements/typedefs.cc: New. * testsuite/30_threads/lock_guard: New. * testsuite/30_threads/lock_guard/requirements: New. * testsuite/30_threads/lock_guard/requirements/typedefs.cc: New. * testsuite/30_threads/lock_guard/requirements/ explicit_instantiation.cc: New. * testsuite/30_threads/headers: New. * testsuite/30_threads/headers/mutex: New. * testsuite/30_threads/headers/mutex/types_std_c++0x.cc: New. * testsuite/30_threads/headers/mutex/std_c++0x_neg.cc: New. * testsuite/30_threads/headers/condition_variable: New. * testsuite/30_threads/headers/condition_variable/ types_std_c++0x.cc: New. * testsuite/30_threads/headers/condition_variable/std_c++0x_neg.cc: New. * testsuite/30_threads/once_flag: New. * testsuite/30_threads/unique_lock: New. * testsuite/30_threads/unique_lock/requirements: New. * testsuite/30_threads/unique_lock/requirements/typedefs.cc: New. * testsuite/30_threads/unique_lock/requirements/ explicit_instantiation.cc: New. * testsuite/17_intro/headers/c++200x/all.cc: Add new includes. From-SVN: r135007
2008-05-06 23:11:47 +02:00
{
// XXX EINVAL, EAGAIN, EBUSY
condition_variable: Use new deleted ctors. 2008-09-03 Chris Fairles <chris.fairles@gmail.com> * include/std/condition_variable: Use new deleted ctors. * include/std/mutex: Likewise plus implement timed_mutex, recursive_timed_mutex and call_once. * src/condition_variable.cc: Implement wait(). Use gthread types. Remove _GTHREADS_HAS_COND checks in favor of global _GLIBCXX_HAS_GTHREADS. * src/mutex.cc (call_once): Implementation using TLS with mutex fallback. * config/abi/pre/gnu.ver: Add exported symbols. * testsuite/lib/libstdc++.exp (check_v3_target_gthreads): New. * testsuite/lib/dg-options.exp (dg-require-gthreads): Likewise. * testsuite/30_threads/lock_guard/requirements/typedefs.cc: Use dg-require-gthreads and dg-require-cstdint. * testsuite/30_threads/lock_guard/requirements/ explicit_instantiation.cc: Likewise. * testsuite/30_threads/mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/mutex/cons/1.cc: Likewise. * testsuite/30_threads/mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/mutex/lock/1.cc: Likewise. * testsuite/30_threads/mutex/unlock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/recursive_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/recursive_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/recursive_mutex/lock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/unique_lock/requirements/ explicit_instantiation.cc: Likewise. * testsuite/30_threads/unique_lock/requirements/typedefs.cc: Likewise. * testsuite/30_threads/mutex/cons/assign_neg.cc: Also adjust dg-error lines for deleted members. * testsuite/30_threads/mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/call_once/once_flag.cc: New. * testsuite/30_threads/call_once/call_once1.cc: Likewise. * testsuite/30_threads/condition_variable/cons/1.cc: Likewise. * testsuite/30_threads/condition_variable/cons/copy_neg.cc: Likewise * testsuite/30_threads/condition_variable/cons/assign_neg.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/1.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/copy_neg.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/assign_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/timed_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_until/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_until/2.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/1.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/timed_mutex/lock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/2.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/3.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_until/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_until/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/lock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/lock/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/3.cc: Likewise. * testsuite/30_threads/unique_lock/modifiers/1.cc: Likewise. * testsuite/30_threads/unique_lock/modifiers/2.cc: Likewise. * testsuite/30_threads/unique_lock/cons/1.cc: Likewise. * testsuite/30_threads/unique_lock/cons/2.cc: Likewise. * testsuite/30_threads/unique_lock/cons/3.cc: Likewise. * testsuite/30_threads/unique_lock/cons/4.cc: Likewise. * testsuite/30_threads/unique_lock/cons/5.cc: Likewise. * testsuite/30_threads/unique_lock/cons/6.cc: Likewise. * testsuite/30_threads/unique_lock/locking/1.cc: Likewise. * testsuite/30_threads/unique_lock/locking/2.cc: Likewise. * testsuite/30_threads/unique_lock/locking/3.cc: Likewise. * testsuite/30_threads/unique_lock/locking/4.cc: Likewise. From-SVN: r139943
2008-09-03 19:46:09 +02:00
return !__gthread_recursive_mutex_trylock(&_M_mutex);
condition_variable: New. 2008-05-06 Benjamin Kosnik <bkoz@redhat.com> * include/std/condition_variable: New. * include/std/mutex: New. * src/condition_variable.cc: New. * src/mutex.cc: New. * include/bits/functexcept.h: Add __throw_system_error varients. * src/functexcept.cc: Same. * config/abi/pre/gnu.ver: Add exports. * doc/xml/manual/using.xml: Add new includes. * doc/doxygen/user.cfg.in: Doxygen support. * doc/doxygen/doxygroups.cc: Same. * include/Makefile.am: Add mutex, condition_variable. * include/Makefile.in: Regenerated. * src/Makefile.am: Add mutex.cc, condition_variable.cc. * src/Makefile.in: Regenerated. * testsuite/30_threads: New. * testsuite/30_threads/lock_error: New. * testsuite/30_threads/mutex: New. * testsuite/30_threads/mutex/dest: New. * testsuite/30_threads/mutex/dest/destructor_locked.cc: New. * testsuite/30_threads/mutex/native_handle: New. * testsuite/30_threads/mutex/native_handle/1.cc: New. * testsuite/30_threads/mutex/cons: New. * testsuite/30_threads/mutex/cons/assign_neg.cc: New. * testsuite/30_threads/mutex/cons/1.cc: New. * testsuite/30_threads/mutex/cons/copy_neg.cc: New. * testsuite/30_threads/mutex/requirements: New. * testsuite/30_threads/mutex/requirements/typedefs.cc: New. * testsuite/30_threads/mutex/try_lock: New. * testsuite/30_threads/mutex/try_lock/1.cc: New. * testsuite/30_threads/mutex/try_lock/2.cc: New. * testsuite/30_threads/mutex/lock: New. * testsuite/30_threads/mutex/lock/1.cc: New. * testsuite/30_threads/mutex/unlock: New. * testsuite/30_threads/mutex/unlock/1.cc: New. * testsuite/30_threads/recursive_mutex: New. * testsuite/30_threads/recursive_mutex/dest: New. * testsuite/30_threads/recursive_mutex/dest/destructor_locked.cc: New. * testsuite/30_threads/recursive_mutex/native_handle: New. * testsuite/30_threads/recursive_mutex/native_handle/1.cc: New. * testsuite/30_threads/recursive_mutex/cons: New. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: New. * testsuite/30_threads/recursive_mutex/cons/1.cc: New. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: New. * testsuite/30_threads/recursive_mutex/requirements: New. * testsuite/30_threads/recursive_mutex/requirements/typedefs.cc: New. * testsuite/30_threads/lock_guard: New. * testsuite/30_threads/lock_guard/requirements: New. * testsuite/30_threads/lock_guard/requirements/typedefs.cc: New. * testsuite/30_threads/lock_guard/requirements/ explicit_instantiation.cc: New. * testsuite/30_threads/headers: New. * testsuite/30_threads/headers/mutex: New. * testsuite/30_threads/headers/mutex/types_std_c++0x.cc: New. * testsuite/30_threads/headers/mutex/std_c++0x_neg.cc: New. * testsuite/30_threads/headers/condition_variable: New. * testsuite/30_threads/headers/condition_variable/ types_std_c++0x.cc: New. * testsuite/30_threads/headers/condition_variable/std_c++0x_neg.cc: New. * testsuite/30_threads/once_flag: New. * testsuite/30_threads/unique_lock: New. * testsuite/30_threads/unique_lock/requirements: New. * testsuite/30_threads/unique_lock/requirements/typedefs.cc: New. * testsuite/30_threads/unique_lock/requirements/ explicit_instantiation.cc: New. * testsuite/17_intro/headers/c++200x/all.cc: Add new includes. From-SVN: r135007
2008-05-06 23:11:47 +02:00
}
void
condition_variable: New. 2008-05-06 Benjamin Kosnik <bkoz@redhat.com> * include/std/condition_variable: New. * include/std/mutex: New. * src/condition_variable.cc: New. * src/mutex.cc: New. * include/bits/functexcept.h: Add __throw_system_error varients. * src/functexcept.cc: Same. * config/abi/pre/gnu.ver: Add exports. * doc/xml/manual/using.xml: Add new includes. * doc/doxygen/user.cfg.in: Doxygen support. * doc/doxygen/doxygroups.cc: Same. * include/Makefile.am: Add mutex, condition_variable. * include/Makefile.in: Regenerated. * src/Makefile.am: Add mutex.cc, condition_variable.cc. * src/Makefile.in: Regenerated. * testsuite/30_threads: New. * testsuite/30_threads/lock_error: New. * testsuite/30_threads/mutex: New. * testsuite/30_threads/mutex/dest: New. * testsuite/30_threads/mutex/dest/destructor_locked.cc: New. * testsuite/30_threads/mutex/native_handle: New. * testsuite/30_threads/mutex/native_handle/1.cc: New. * testsuite/30_threads/mutex/cons: New. * testsuite/30_threads/mutex/cons/assign_neg.cc: New. * testsuite/30_threads/mutex/cons/1.cc: New. * testsuite/30_threads/mutex/cons/copy_neg.cc: New. * testsuite/30_threads/mutex/requirements: New. * testsuite/30_threads/mutex/requirements/typedefs.cc: New. * testsuite/30_threads/mutex/try_lock: New. * testsuite/30_threads/mutex/try_lock/1.cc: New. * testsuite/30_threads/mutex/try_lock/2.cc: New. * testsuite/30_threads/mutex/lock: New. * testsuite/30_threads/mutex/lock/1.cc: New. * testsuite/30_threads/mutex/unlock: New. * testsuite/30_threads/mutex/unlock/1.cc: New. * testsuite/30_threads/recursive_mutex: New. * testsuite/30_threads/recursive_mutex/dest: New. * testsuite/30_threads/recursive_mutex/dest/destructor_locked.cc: New. * testsuite/30_threads/recursive_mutex/native_handle: New. * testsuite/30_threads/recursive_mutex/native_handle/1.cc: New. * testsuite/30_threads/recursive_mutex/cons: New. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: New. * testsuite/30_threads/recursive_mutex/cons/1.cc: New. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: New. * testsuite/30_threads/recursive_mutex/requirements: New. * testsuite/30_threads/recursive_mutex/requirements/typedefs.cc: New. * testsuite/30_threads/lock_guard: New. * testsuite/30_threads/lock_guard/requirements: New. * testsuite/30_threads/lock_guard/requirements/typedefs.cc: New. * testsuite/30_threads/lock_guard/requirements/ explicit_instantiation.cc: New. * testsuite/30_threads/headers: New. * testsuite/30_threads/headers/mutex: New. * testsuite/30_threads/headers/mutex/types_std_c++0x.cc: New. * testsuite/30_threads/headers/mutex/std_c++0x_neg.cc: New. * testsuite/30_threads/headers/condition_variable: New. * testsuite/30_threads/headers/condition_variable/ types_std_c++0x.cc: New. * testsuite/30_threads/headers/condition_variable/std_c++0x_neg.cc: New. * testsuite/30_threads/once_flag: New. * testsuite/30_threads/unique_lock: New. * testsuite/30_threads/unique_lock/requirements: New. * testsuite/30_threads/unique_lock/requirements/typedefs.cc: New. * testsuite/30_threads/unique_lock/requirements/ explicit_instantiation.cc: New. * testsuite/17_intro/headers/c++200x/all.cc: Add new includes. From-SVN: r135007
2008-05-06 23:11:47 +02:00
unlock()
{
// XXX EINVAL, EAGAIN, EBUSY
condition_variable: Use new deleted ctors. 2008-09-03 Chris Fairles <chris.fairles@gmail.com> * include/std/condition_variable: Use new deleted ctors. * include/std/mutex: Likewise plus implement timed_mutex, recursive_timed_mutex and call_once. * src/condition_variable.cc: Implement wait(). Use gthread types. Remove _GTHREADS_HAS_COND checks in favor of global _GLIBCXX_HAS_GTHREADS. * src/mutex.cc (call_once): Implementation using TLS with mutex fallback. * config/abi/pre/gnu.ver: Add exported symbols. * testsuite/lib/libstdc++.exp (check_v3_target_gthreads): New. * testsuite/lib/dg-options.exp (dg-require-gthreads): Likewise. * testsuite/30_threads/lock_guard/requirements/typedefs.cc: Use dg-require-gthreads and dg-require-cstdint. * testsuite/30_threads/lock_guard/requirements/ explicit_instantiation.cc: Likewise. * testsuite/30_threads/mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/mutex/cons/1.cc: Likewise. * testsuite/30_threads/mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/mutex/lock/1.cc: Likewise. * testsuite/30_threads/mutex/unlock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/recursive_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/recursive_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/recursive_mutex/lock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/unique_lock/requirements/ explicit_instantiation.cc: Likewise. * testsuite/30_threads/unique_lock/requirements/typedefs.cc: Likewise. * testsuite/30_threads/mutex/cons/assign_neg.cc: Also adjust dg-error lines for deleted members. * testsuite/30_threads/mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/call_once/once_flag.cc: New. * testsuite/30_threads/call_once/call_once1.cc: Likewise. * testsuite/30_threads/condition_variable/cons/1.cc: Likewise. * testsuite/30_threads/condition_variable/cons/copy_neg.cc: Likewise * testsuite/30_threads/condition_variable/cons/assign_neg.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/1.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/copy_neg.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/assign_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/timed_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_until/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_until/2.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/1.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/timed_mutex/lock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/2.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/3.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_until/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_until/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/lock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/lock/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/3.cc: Likewise. * testsuite/30_threads/unique_lock/modifiers/1.cc: Likewise. * testsuite/30_threads/unique_lock/modifiers/2.cc: Likewise. * testsuite/30_threads/unique_lock/cons/1.cc: Likewise. * testsuite/30_threads/unique_lock/cons/2.cc: Likewise. * testsuite/30_threads/unique_lock/cons/3.cc: Likewise. * testsuite/30_threads/unique_lock/cons/4.cc: Likewise. * testsuite/30_threads/unique_lock/cons/5.cc: Likewise. * testsuite/30_threads/unique_lock/cons/6.cc: Likewise. * testsuite/30_threads/unique_lock/locking/1.cc: Likewise. * testsuite/30_threads/unique_lock/locking/2.cc: Likewise. * testsuite/30_threads/unique_lock/locking/3.cc: Likewise. * testsuite/30_threads/unique_lock/locking/4.cc: Likewise. From-SVN: r139943
2008-09-03 19:46:09 +02:00
__gthread_recursive_mutex_unlock(&_M_mutex);
condition_variable: New. 2008-05-06 Benjamin Kosnik <bkoz@redhat.com> * include/std/condition_variable: New. * include/std/mutex: New. * src/condition_variable.cc: New. * src/mutex.cc: New. * include/bits/functexcept.h: Add __throw_system_error varients. * src/functexcept.cc: Same. * config/abi/pre/gnu.ver: Add exports. * doc/xml/manual/using.xml: Add new includes. * doc/doxygen/user.cfg.in: Doxygen support. * doc/doxygen/doxygroups.cc: Same. * include/Makefile.am: Add mutex, condition_variable. * include/Makefile.in: Regenerated. * src/Makefile.am: Add mutex.cc, condition_variable.cc. * src/Makefile.in: Regenerated. * testsuite/30_threads: New. * testsuite/30_threads/lock_error: New. * testsuite/30_threads/mutex: New. * testsuite/30_threads/mutex/dest: New. * testsuite/30_threads/mutex/dest/destructor_locked.cc: New. * testsuite/30_threads/mutex/native_handle: New. * testsuite/30_threads/mutex/native_handle/1.cc: New. * testsuite/30_threads/mutex/cons: New. * testsuite/30_threads/mutex/cons/assign_neg.cc: New. * testsuite/30_threads/mutex/cons/1.cc: New. * testsuite/30_threads/mutex/cons/copy_neg.cc: New. * testsuite/30_threads/mutex/requirements: New. * testsuite/30_threads/mutex/requirements/typedefs.cc: New. * testsuite/30_threads/mutex/try_lock: New. * testsuite/30_threads/mutex/try_lock/1.cc: New. * testsuite/30_threads/mutex/try_lock/2.cc: New. * testsuite/30_threads/mutex/lock: New. * testsuite/30_threads/mutex/lock/1.cc: New. * testsuite/30_threads/mutex/unlock: New. * testsuite/30_threads/mutex/unlock/1.cc: New. * testsuite/30_threads/recursive_mutex: New. * testsuite/30_threads/recursive_mutex/dest: New. * testsuite/30_threads/recursive_mutex/dest/destructor_locked.cc: New. * testsuite/30_threads/recursive_mutex/native_handle: New. * testsuite/30_threads/recursive_mutex/native_handle/1.cc: New. * testsuite/30_threads/recursive_mutex/cons: New. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: New. * testsuite/30_threads/recursive_mutex/cons/1.cc: New. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: New. * testsuite/30_threads/recursive_mutex/requirements: New. * testsuite/30_threads/recursive_mutex/requirements/typedefs.cc: New. * testsuite/30_threads/lock_guard: New. * testsuite/30_threads/lock_guard/requirements: New. * testsuite/30_threads/lock_guard/requirements/typedefs.cc: New. * testsuite/30_threads/lock_guard/requirements/ explicit_instantiation.cc: New. * testsuite/30_threads/headers: New. * testsuite/30_threads/headers/mutex: New. * testsuite/30_threads/headers/mutex/types_std_c++0x.cc: New. * testsuite/30_threads/headers/mutex/std_c++0x_neg.cc: New. * testsuite/30_threads/headers/condition_variable: New. * testsuite/30_threads/headers/condition_variable/ types_std_c++0x.cc: New. * testsuite/30_threads/headers/condition_variable/std_c++0x_neg.cc: New. * testsuite/30_threads/once_flag: New. * testsuite/30_threads/unique_lock: New. * testsuite/30_threads/unique_lock/requirements: New. * testsuite/30_threads/unique_lock/requirements/typedefs.cc: New. * testsuite/30_threads/unique_lock/requirements/ explicit_instantiation.cc: New. * testsuite/17_intro/headers/c++200x/all.cc: Add new includes. From-SVN: r135007
2008-05-06 23:11:47 +02:00
}
native_handle_type
native_handle()
condition_variable: Use new deleted ctors. 2008-09-03 Chris Fairles <chris.fairles@gmail.com> * include/std/condition_variable: Use new deleted ctors. * include/std/mutex: Likewise plus implement timed_mutex, recursive_timed_mutex and call_once. * src/condition_variable.cc: Implement wait(). Use gthread types. Remove _GTHREADS_HAS_COND checks in favor of global _GLIBCXX_HAS_GTHREADS. * src/mutex.cc (call_once): Implementation using TLS with mutex fallback. * config/abi/pre/gnu.ver: Add exported symbols. * testsuite/lib/libstdc++.exp (check_v3_target_gthreads): New. * testsuite/lib/dg-options.exp (dg-require-gthreads): Likewise. * testsuite/30_threads/lock_guard/requirements/typedefs.cc: Use dg-require-gthreads and dg-require-cstdint. * testsuite/30_threads/lock_guard/requirements/ explicit_instantiation.cc: Likewise. * testsuite/30_threads/mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/mutex/cons/1.cc: Likewise. * testsuite/30_threads/mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/mutex/lock/1.cc: Likewise. * testsuite/30_threads/mutex/unlock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/recursive_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/recursive_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/recursive_mutex/lock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/unique_lock/requirements/ explicit_instantiation.cc: Likewise. * testsuite/30_threads/unique_lock/requirements/typedefs.cc: Likewise. * testsuite/30_threads/mutex/cons/assign_neg.cc: Also adjust dg-error lines for deleted members. * testsuite/30_threads/mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/call_once/once_flag.cc: New. * testsuite/30_threads/call_once/call_once1.cc: Likewise. * testsuite/30_threads/condition_variable/cons/1.cc: Likewise. * testsuite/30_threads/condition_variable/cons/copy_neg.cc: Likewise * testsuite/30_threads/condition_variable/cons/assign_neg.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/1.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/copy_neg.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/assign_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/timed_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_until/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_until/2.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/1.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/timed_mutex/lock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/2.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/3.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_until/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_until/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/lock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/lock/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/3.cc: Likewise. * testsuite/30_threads/unique_lock/modifiers/1.cc: Likewise. * testsuite/30_threads/unique_lock/modifiers/2.cc: Likewise. * testsuite/30_threads/unique_lock/cons/1.cc: Likewise. * testsuite/30_threads/unique_lock/cons/2.cc: Likewise. * testsuite/30_threads/unique_lock/cons/3.cc: Likewise. * testsuite/30_threads/unique_lock/cons/4.cc: Likewise. * testsuite/30_threads/unique_lock/cons/5.cc: Likewise. * testsuite/30_threads/unique_lock/cons/6.cc: Likewise. * testsuite/30_threads/unique_lock/locking/1.cc: Likewise. * testsuite/30_threads/unique_lock/locking/2.cc: Likewise. * testsuite/30_threads/unique_lock/locking/3.cc: Likewise. * testsuite/30_threads/unique_lock/locking/4.cc: Likewise. From-SVN: r139943
2008-09-03 19:46:09 +02:00
{ return &_M_mutex; }
condition_variable: New. 2008-05-06 Benjamin Kosnik <bkoz@redhat.com> * include/std/condition_variable: New. * include/std/mutex: New. * src/condition_variable.cc: New. * src/mutex.cc: New. * include/bits/functexcept.h: Add __throw_system_error varients. * src/functexcept.cc: Same. * config/abi/pre/gnu.ver: Add exports. * doc/xml/manual/using.xml: Add new includes. * doc/doxygen/user.cfg.in: Doxygen support. * doc/doxygen/doxygroups.cc: Same. * include/Makefile.am: Add mutex, condition_variable. * include/Makefile.in: Regenerated. * src/Makefile.am: Add mutex.cc, condition_variable.cc. * src/Makefile.in: Regenerated. * testsuite/30_threads: New. * testsuite/30_threads/lock_error: New. * testsuite/30_threads/mutex: New. * testsuite/30_threads/mutex/dest: New. * testsuite/30_threads/mutex/dest/destructor_locked.cc: New. * testsuite/30_threads/mutex/native_handle: New. * testsuite/30_threads/mutex/native_handle/1.cc: New. * testsuite/30_threads/mutex/cons: New. * testsuite/30_threads/mutex/cons/assign_neg.cc: New. * testsuite/30_threads/mutex/cons/1.cc: New. * testsuite/30_threads/mutex/cons/copy_neg.cc: New. * testsuite/30_threads/mutex/requirements: New. * testsuite/30_threads/mutex/requirements/typedefs.cc: New. * testsuite/30_threads/mutex/try_lock: New. * testsuite/30_threads/mutex/try_lock/1.cc: New. * testsuite/30_threads/mutex/try_lock/2.cc: New. * testsuite/30_threads/mutex/lock: New. * testsuite/30_threads/mutex/lock/1.cc: New. * testsuite/30_threads/mutex/unlock: New. * testsuite/30_threads/mutex/unlock/1.cc: New. * testsuite/30_threads/recursive_mutex: New. * testsuite/30_threads/recursive_mutex/dest: New. * testsuite/30_threads/recursive_mutex/dest/destructor_locked.cc: New. * testsuite/30_threads/recursive_mutex/native_handle: New. * testsuite/30_threads/recursive_mutex/native_handle/1.cc: New. * testsuite/30_threads/recursive_mutex/cons: New. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: New. * testsuite/30_threads/recursive_mutex/cons/1.cc: New. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: New. * testsuite/30_threads/recursive_mutex/requirements: New. * testsuite/30_threads/recursive_mutex/requirements/typedefs.cc: New. * testsuite/30_threads/lock_guard: New. * testsuite/30_threads/lock_guard/requirements: New. * testsuite/30_threads/lock_guard/requirements/typedefs.cc: New. * testsuite/30_threads/lock_guard/requirements/ explicit_instantiation.cc: New. * testsuite/30_threads/headers: New. * testsuite/30_threads/headers/mutex: New. * testsuite/30_threads/headers/mutex/types_std_c++0x.cc: New. * testsuite/30_threads/headers/mutex/std_c++0x_neg.cc: New. * testsuite/30_threads/headers/condition_variable: New. * testsuite/30_threads/headers/condition_variable/ types_std_c++0x.cc: New. * testsuite/30_threads/headers/condition_variable/std_c++0x_neg.cc: New. * testsuite/30_threads/once_flag: New. * testsuite/30_threads/unique_lock: New. * testsuite/30_threads/unique_lock/requirements: New. * testsuite/30_threads/unique_lock/requirements/typedefs.cc: New. * testsuite/30_threads/unique_lock/requirements/ explicit_instantiation.cc: New. * testsuite/17_intro/headers/c++200x/all.cc: Add new includes. From-SVN: r135007
2008-05-06 23:11:47 +02:00
};
re PR libstdc++/50196 ([C++0x] std::thread not available under macos) PR libstdc++/50196 * acinclude.m4 (GLIBCXX_HAS_GTHREADS): Don't depend on _POSIX_TIMEOUTS. * configure: Regenerate. * include/std/mutex (timed_mutex, recursive_timed_mutex): Define conditionally on GTHREADS_HAS_MUTEX_TIMEDLOCK. * testsuite/lib/libstdc++.exp (check_v3_target_gthreads_timed): Define. * testsuite/lib/dg-options.exp (dg-require-gthreads-timed): Define. * testsuite/30_threads/recursive_timed_mutex/dest/destructor_locked.cc: Use dg-require-gthreads-timed instead of dg-require-gthreads. * testsuite/30_threads/recursive_timed_mutex/native_handle/ typesizes.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_until/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_until/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/lock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/lock/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/3.cc: Likewise. * testsuite/30_threads/timed_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/timed_mutex/native_handle/typesizes.cc: Likewise. * testsuite/30_threads/timed_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_until/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_until/2.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/1.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/requirements/standard_layout.cc: Likewise. * testsuite/30_threads/timed_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/timed_mutex/lock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/2.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/3.cc: Likewise. * testsuite/30_threads/unique_lock/cons/5.cc: Likewise. * testsuite/30_threads/unique_lock/cons/6.cc: Likewise. * testsuite/30_threads/unique_lock/locking/3.cc: Likewise. * testsuite/30_threads/unique_lock/locking/4.cc: Likewise. From-SVN: r180329
2011-10-22 23:31:24 +02:00
#if _GTHREAD_USE_MUTEX_TIMEDLOCK
/// timed_mutex
class timed_mutex : private __mutex_base
condition_variable (condition_variable): Remove _M_internal_mutex. 2009-02-09 Benjamin Kosnik <bkoz@redhat.com> * include/std/condition_variable (condition_variable): Remove _M_internal_mutex. Add private __native_type typedef. * src/condition_variable.cc (condition_variable::notify_one): Remove _M_internal_mutex use. Use typedef. (condition_variable::notify_all): Same. * include/std/mutex (mutex): Add private __native_type typedef. Use it. (recursive_mutex): Same. (timed_mutex): Same. (recursive_timed_mutex): Same. (once_flag): Make __native_type typedef private. * include/std/thread (this_thread): Add minimal markup. * testsuite/30_threads/condition_variable_any/cons/assign_neg.cc: Adjust line numbers. * testsuite/30_threads/condition_variable_any/cons/copy_neg.cc: Same. * testsuite/30_threads/mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/mutex/cons/copy_neg.cc: Same. * testsuite/30_threads/timed_mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/timed_mutex/cons/copy_neg.cc: Same. * testsuite/30_threads/thread/cons/assign_neg.cc: Same. * testsuite/30_threads/thread/cons/copy_neg.cc: Same. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: Same. * testsuite/30_threads/condition_variable/cons/assign_neg.cc: Same. * testsuite/30_threads/condition_variable/cons/copy_neg.cc: Same. * testsuite/30_threads/recursive_timed_mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/recursive_timed_mutex/cons/copy_neg.cc: Same. * testsuite/util/thread/all.h: Testsuite utilities for testing thread. * testsuite/30_threads/condition_variable_any/native_handle/ typesizes.cc: New. * testsuite/30_threads/mutex/native_handle/typesizes.cc: Same. * testsuite/30_threads/timed_mutex/native_handle/typesizes.cc: Same. * testsuite/30_threads/thread/native_handle/typesizes.cc: Same. * testsuite/30_threads/recursive_mutex/native_handle/typesizes.cc: Same. * testsuite/30_threads/condition_variable/native_handle/ typesizes.cc: Same. * testsuite/30_threads/recursive_timed_mutex/native_handle/ typesizes.cc: Same. From-SVN: r144053
2009-02-10 09:29:57 +01:00
{
#ifdef _GLIBCXX_USE_CLOCK_MONOTONIC
typedef chrono::steady_clock __clock_t;
condition_variable (condition_variable): Remove _M_internal_mutex. 2009-02-09 Benjamin Kosnik <bkoz@redhat.com> * include/std/condition_variable (condition_variable): Remove _M_internal_mutex. Add private __native_type typedef. * src/condition_variable.cc (condition_variable::notify_one): Remove _M_internal_mutex use. Use typedef. (condition_variable::notify_all): Same. * include/std/mutex (mutex): Add private __native_type typedef. Use it. (recursive_mutex): Same. (timed_mutex): Same. (recursive_timed_mutex): Same. (once_flag): Make __native_type typedef private. * include/std/thread (this_thread): Add minimal markup. * testsuite/30_threads/condition_variable_any/cons/assign_neg.cc: Adjust line numbers. * testsuite/30_threads/condition_variable_any/cons/copy_neg.cc: Same. * testsuite/30_threads/mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/mutex/cons/copy_neg.cc: Same. * testsuite/30_threads/timed_mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/timed_mutex/cons/copy_neg.cc: Same. * testsuite/30_threads/thread/cons/assign_neg.cc: Same. * testsuite/30_threads/thread/cons/copy_neg.cc: Same. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: Same. * testsuite/30_threads/condition_variable/cons/assign_neg.cc: Same. * testsuite/30_threads/condition_variable/cons/copy_neg.cc: Same. * testsuite/30_threads/recursive_timed_mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/recursive_timed_mutex/cons/copy_neg.cc: Same. * testsuite/util/thread/all.h: Testsuite utilities for testing thread. * testsuite/30_threads/condition_variable_any/native_handle/ typesizes.cc: New. * testsuite/30_threads/mutex/native_handle/typesizes.cc: Same. * testsuite/30_threads/timed_mutex/native_handle/typesizes.cc: Same. * testsuite/30_threads/thread/native_handle/typesizes.cc: Same. * testsuite/30_threads/recursive_mutex/native_handle/typesizes.cc: Same. * testsuite/30_threads/condition_variable/native_handle/ typesizes.cc: Same. * testsuite/30_threads/recursive_timed_mutex/native_handle/ typesizes.cc: Same. From-SVN: r144053
2009-02-10 09:29:57 +01:00
#else
typedef chrono::high_resolution_clock __clock_t;
#endif
public:
condition_variable (condition_variable): Remove _M_internal_mutex. 2009-02-09 Benjamin Kosnik <bkoz@redhat.com> * include/std/condition_variable (condition_variable): Remove _M_internal_mutex. Add private __native_type typedef. * src/condition_variable.cc (condition_variable::notify_one): Remove _M_internal_mutex use. Use typedef. (condition_variable::notify_all): Same. * include/std/mutex (mutex): Add private __native_type typedef. Use it. (recursive_mutex): Same. (timed_mutex): Same. (recursive_timed_mutex): Same. (once_flag): Make __native_type typedef private. * include/std/thread (this_thread): Add minimal markup. * testsuite/30_threads/condition_variable_any/cons/assign_neg.cc: Adjust line numbers. * testsuite/30_threads/condition_variable_any/cons/copy_neg.cc: Same. * testsuite/30_threads/mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/mutex/cons/copy_neg.cc: Same. * testsuite/30_threads/timed_mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/timed_mutex/cons/copy_neg.cc: Same. * testsuite/30_threads/thread/cons/assign_neg.cc: Same. * testsuite/30_threads/thread/cons/copy_neg.cc: Same. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: Same. * testsuite/30_threads/condition_variable/cons/assign_neg.cc: Same. * testsuite/30_threads/condition_variable/cons/copy_neg.cc: Same. * testsuite/30_threads/recursive_timed_mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/recursive_timed_mutex/cons/copy_neg.cc: Same. * testsuite/util/thread/all.h: Testsuite utilities for testing thread. * testsuite/30_threads/condition_variable_any/native_handle/ typesizes.cc: New. * testsuite/30_threads/mutex/native_handle/typesizes.cc: Same. * testsuite/30_threads/timed_mutex/native_handle/typesizes.cc: Same. * testsuite/30_threads/thread/native_handle/typesizes.cc: Same. * testsuite/30_threads/recursive_mutex/native_handle/typesizes.cc: Same. * testsuite/30_threads/condition_variable/native_handle/ typesizes.cc: Same. * testsuite/30_threads/recursive_timed_mutex/native_handle/ typesizes.cc: Same. From-SVN: r144053
2009-02-10 09:29:57 +01:00
typedef __native_type* native_handle_type;
timed_mutex() = default;
~timed_mutex() = default;
condition_variable: Use new deleted ctors. 2008-09-03 Chris Fairles <chris.fairles@gmail.com> * include/std/condition_variable: Use new deleted ctors. * include/std/mutex: Likewise plus implement timed_mutex, recursive_timed_mutex and call_once. * src/condition_variable.cc: Implement wait(). Use gthread types. Remove _GTHREADS_HAS_COND checks in favor of global _GLIBCXX_HAS_GTHREADS. * src/mutex.cc (call_once): Implementation using TLS with mutex fallback. * config/abi/pre/gnu.ver: Add exported symbols. * testsuite/lib/libstdc++.exp (check_v3_target_gthreads): New. * testsuite/lib/dg-options.exp (dg-require-gthreads): Likewise. * testsuite/30_threads/lock_guard/requirements/typedefs.cc: Use dg-require-gthreads and dg-require-cstdint. * testsuite/30_threads/lock_guard/requirements/ explicit_instantiation.cc: Likewise. * testsuite/30_threads/mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/mutex/cons/1.cc: Likewise. * testsuite/30_threads/mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/mutex/lock/1.cc: Likewise. * testsuite/30_threads/mutex/unlock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/recursive_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/recursive_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/recursive_mutex/lock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/unique_lock/requirements/ explicit_instantiation.cc: Likewise. * testsuite/30_threads/unique_lock/requirements/typedefs.cc: Likewise. * testsuite/30_threads/mutex/cons/assign_neg.cc: Also adjust dg-error lines for deleted members. * testsuite/30_threads/mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/call_once/once_flag.cc: New. * testsuite/30_threads/call_once/call_once1.cc: Likewise. * testsuite/30_threads/condition_variable/cons/1.cc: Likewise. * testsuite/30_threads/condition_variable/cons/copy_neg.cc: Likewise * testsuite/30_threads/condition_variable/cons/assign_neg.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/1.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/copy_neg.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/assign_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/timed_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_until/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_until/2.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/1.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/timed_mutex/lock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/2.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/3.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_until/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_until/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/lock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/lock/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/3.cc: Likewise. * testsuite/30_threads/unique_lock/modifiers/1.cc: Likewise. * testsuite/30_threads/unique_lock/modifiers/2.cc: Likewise. * testsuite/30_threads/unique_lock/cons/1.cc: Likewise. * testsuite/30_threads/unique_lock/cons/2.cc: Likewise. * testsuite/30_threads/unique_lock/cons/3.cc: Likewise. * testsuite/30_threads/unique_lock/cons/4.cc: Likewise. * testsuite/30_threads/unique_lock/cons/5.cc: Likewise. * testsuite/30_threads/unique_lock/cons/6.cc: Likewise. * testsuite/30_threads/unique_lock/locking/1.cc: Likewise. * testsuite/30_threads/unique_lock/locking/2.cc: Likewise. * testsuite/30_threads/unique_lock/locking/3.cc: Likewise. * testsuite/30_threads/unique_lock/locking/4.cc: Likewise. From-SVN: r139943
2008-09-03 19:46:09 +02:00
timed_mutex(const timed_mutex&) = delete;
timed_mutex& operator=(const timed_mutex&) = delete;
void
lock()
{
int __e = __gthread_mutex_lock(&_M_mutex);
// EINVAL, EAGAIN, EBUSY, EINVAL, EDEADLK(may)
if (__e)
__throw_system_error(__e);
}
bool
try_lock() noexcept
condition_variable: Use new deleted ctors. 2008-09-03 Chris Fairles <chris.fairles@gmail.com> * include/std/condition_variable: Use new deleted ctors. * include/std/mutex: Likewise plus implement timed_mutex, recursive_timed_mutex and call_once. * src/condition_variable.cc: Implement wait(). Use gthread types. Remove _GTHREADS_HAS_COND checks in favor of global _GLIBCXX_HAS_GTHREADS. * src/mutex.cc (call_once): Implementation using TLS with mutex fallback. * config/abi/pre/gnu.ver: Add exported symbols. * testsuite/lib/libstdc++.exp (check_v3_target_gthreads): New. * testsuite/lib/dg-options.exp (dg-require-gthreads): Likewise. * testsuite/30_threads/lock_guard/requirements/typedefs.cc: Use dg-require-gthreads and dg-require-cstdint. * testsuite/30_threads/lock_guard/requirements/ explicit_instantiation.cc: Likewise. * testsuite/30_threads/mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/mutex/cons/1.cc: Likewise. * testsuite/30_threads/mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/mutex/lock/1.cc: Likewise. * testsuite/30_threads/mutex/unlock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/recursive_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/recursive_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/recursive_mutex/lock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/unique_lock/requirements/ explicit_instantiation.cc: Likewise. * testsuite/30_threads/unique_lock/requirements/typedefs.cc: Likewise. * testsuite/30_threads/mutex/cons/assign_neg.cc: Also adjust dg-error lines for deleted members. * testsuite/30_threads/mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/call_once/once_flag.cc: New. * testsuite/30_threads/call_once/call_once1.cc: Likewise. * testsuite/30_threads/condition_variable/cons/1.cc: Likewise. * testsuite/30_threads/condition_variable/cons/copy_neg.cc: Likewise * testsuite/30_threads/condition_variable/cons/assign_neg.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/1.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/copy_neg.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/assign_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/timed_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_until/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_until/2.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/1.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/timed_mutex/lock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/2.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/3.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_until/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_until/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/lock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/lock/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/3.cc: Likewise. * testsuite/30_threads/unique_lock/modifiers/1.cc: Likewise. * testsuite/30_threads/unique_lock/modifiers/2.cc: Likewise. * testsuite/30_threads/unique_lock/cons/1.cc: Likewise. * testsuite/30_threads/unique_lock/cons/2.cc: Likewise. * testsuite/30_threads/unique_lock/cons/3.cc: Likewise. * testsuite/30_threads/unique_lock/cons/4.cc: Likewise. * testsuite/30_threads/unique_lock/cons/5.cc: Likewise. * testsuite/30_threads/unique_lock/cons/6.cc: Likewise. * testsuite/30_threads/unique_lock/locking/1.cc: Likewise. * testsuite/30_threads/unique_lock/locking/2.cc: Likewise. * testsuite/30_threads/unique_lock/locking/3.cc: Likewise. * testsuite/30_threads/unique_lock/locking/4.cc: Likewise. From-SVN: r139943
2008-09-03 19:46:09 +02:00
{
// XXX EINVAL, EAGAIN, EBUSY
return !__gthread_mutex_trylock(&_M_mutex);
}
template <class _Rep, class _Period>
bool
condition_variable: Use new deleted ctors. 2008-09-03 Chris Fairles <chris.fairles@gmail.com> * include/std/condition_variable: Use new deleted ctors. * include/std/mutex: Likewise plus implement timed_mutex, recursive_timed_mutex and call_once. * src/condition_variable.cc: Implement wait(). Use gthread types. Remove _GTHREADS_HAS_COND checks in favor of global _GLIBCXX_HAS_GTHREADS. * src/mutex.cc (call_once): Implementation using TLS with mutex fallback. * config/abi/pre/gnu.ver: Add exported symbols. * testsuite/lib/libstdc++.exp (check_v3_target_gthreads): New. * testsuite/lib/dg-options.exp (dg-require-gthreads): Likewise. * testsuite/30_threads/lock_guard/requirements/typedefs.cc: Use dg-require-gthreads and dg-require-cstdint. * testsuite/30_threads/lock_guard/requirements/ explicit_instantiation.cc: Likewise. * testsuite/30_threads/mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/mutex/cons/1.cc: Likewise. * testsuite/30_threads/mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/mutex/lock/1.cc: Likewise. * testsuite/30_threads/mutex/unlock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/recursive_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/recursive_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/recursive_mutex/lock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/unique_lock/requirements/ explicit_instantiation.cc: Likewise. * testsuite/30_threads/unique_lock/requirements/typedefs.cc: Likewise. * testsuite/30_threads/mutex/cons/assign_neg.cc: Also adjust dg-error lines for deleted members. * testsuite/30_threads/mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/call_once/once_flag.cc: New. * testsuite/30_threads/call_once/call_once1.cc: Likewise. * testsuite/30_threads/condition_variable/cons/1.cc: Likewise. * testsuite/30_threads/condition_variable/cons/copy_neg.cc: Likewise * testsuite/30_threads/condition_variable/cons/assign_neg.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/1.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/copy_neg.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/assign_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/timed_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_until/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_until/2.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/1.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/timed_mutex/lock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/2.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/3.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_until/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_until/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/lock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/lock/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/3.cc: Likewise. * testsuite/30_threads/unique_lock/modifiers/1.cc: Likewise. * testsuite/30_threads/unique_lock/modifiers/2.cc: Likewise. * testsuite/30_threads/unique_lock/cons/1.cc: Likewise. * testsuite/30_threads/unique_lock/cons/2.cc: Likewise. * testsuite/30_threads/unique_lock/cons/3.cc: Likewise. * testsuite/30_threads/unique_lock/cons/4.cc: Likewise. * testsuite/30_threads/unique_lock/cons/5.cc: Likewise. * testsuite/30_threads/unique_lock/cons/6.cc: Likewise. * testsuite/30_threads/unique_lock/locking/1.cc: Likewise. * testsuite/30_threads/unique_lock/locking/2.cc: Likewise. * testsuite/30_threads/unique_lock/locking/3.cc: Likewise. * testsuite/30_threads/unique_lock/locking/4.cc: Likewise. From-SVN: r139943
2008-09-03 19:46:09 +02:00
try_lock_for(const chrono::duration<_Rep, _Period>& __rtime)
{ return __try_lock_for_impl(__rtime); }
template <class _Clock, class _Duration>
bool
condition_variable: Use new deleted ctors. 2008-09-03 Chris Fairles <chris.fairles@gmail.com> * include/std/condition_variable: Use new deleted ctors. * include/std/mutex: Likewise plus implement timed_mutex, recursive_timed_mutex and call_once. * src/condition_variable.cc: Implement wait(). Use gthread types. Remove _GTHREADS_HAS_COND checks in favor of global _GLIBCXX_HAS_GTHREADS. * src/mutex.cc (call_once): Implementation using TLS with mutex fallback. * config/abi/pre/gnu.ver: Add exported symbols. * testsuite/lib/libstdc++.exp (check_v3_target_gthreads): New. * testsuite/lib/dg-options.exp (dg-require-gthreads): Likewise. * testsuite/30_threads/lock_guard/requirements/typedefs.cc: Use dg-require-gthreads and dg-require-cstdint. * testsuite/30_threads/lock_guard/requirements/ explicit_instantiation.cc: Likewise. * testsuite/30_threads/mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/mutex/cons/1.cc: Likewise. * testsuite/30_threads/mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/mutex/lock/1.cc: Likewise. * testsuite/30_threads/mutex/unlock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/recursive_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/recursive_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/recursive_mutex/lock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/unique_lock/requirements/ explicit_instantiation.cc: Likewise. * testsuite/30_threads/unique_lock/requirements/typedefs.cc: Likewise. * testsuite/30_threads/mutex/cons/assign_neg.cc: Also adjust dg-error lines for deleted members. * testsuite/30_threads/mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/call_once/once_flag.cc: New. * testsuite/30_threads/call_once/call_once1.cc: Likewise. * testsuite/30_threads/condition_variable/cons/1.cc: Likewise. * testsuite/30_threads/condition_variable/cons/copy_neg.cc: Likewise * testsuite/30_threads/condition_variable/cons/assign_neg.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/1.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/copy_neg.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/assign_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/timed_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_until/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_until/2.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/1.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/timed_mutex/lock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/2.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/3.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_until/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_until/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/lock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/lock/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/3.cc: Likewise. * testsuite/30_threads/unique_lock/modifiers/1.cc: Likewise. * testsuite/30_threads/unique_lock/modifiers/2.cc: Likewise. * testsuite/30_threads/unique_lock/cons/1.cc: Likewise. * testsuite/30_threads/unique_lock/cons/2.cc: Likewise. * testsuite/30_threads/unique_lock/cons/3.cc: Likewise. * testsuite/30_threads/unique_lock/cons/4.cc: Likewise. * testsuite/30_threads/unique_lock/cons/5.cc: Likewise. * testsuite/30_threads/unique_lock/cons/6.cc: Likewise. * testsuite/30_threads/unique_lock/locking/1.cc: Likewise. * testsuite/30_threads/unique_lock/locking/2.cc: Likewise. * testsuite/30_threads/unique_lock/locking/3.cc: Likewise. * testsuite/30_threads/unique_lock/locking/4.cc: Likewise. From-SVN: r139943
2008-09-03 19:46:09 +02:00
try_lock_until(const chrono::time_point<_Clock, _Duration>& __atime)
condition_variable (condition_variable): Remove _M_internal_mutex. 2009-02-09 Benjamin Kosnik <bkoz@redhat.com> * include/std/condition_variable (condition_variable): Remove _M_internal_mutex. Add private __native_type typedef. * src/condition_variable.cc (condition_variable::notify_one): Remove _M_internal_mutex use. Use typedef. (condition_variable::notify_all): Same. * include/std/mutex (mutex): Add private __native_type typedef. Use it. (recursive_mutex): Same. (timed_mutex): Same. (recursive_timed_mutex): Same. (once_flag): Make __native_type typedef private. * include/std/thread (this_thread): Add minimal markup. * testsuite/30_threads/condition_variable_any/cons/assign_neg.cc: Adjust line numbers. * testsuite/30_threads/condition_variable_any/cons/copy_neg.cc: Same. * testsuite/30_threads/mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/mutex/cons/copy_neg.cc: Same. * testsuite/30_threads/timed_mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/timed_mutex/cons/copy_neg.cc: Same. * testsuite/30_threads/thread/cons/assign_neg.cc: Same. * testsuite/30_threads/thread/cons/copy_neg.cc: Same. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: Same. * testsuite/30_threads/condition_variable/cons/assign_neg.cc: Same. * testsuite/30_threads/condition_variable/cons/copy_neg.cc: Same. * testsuite/30_threads/recursive_timed_mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/recursive_timed_mutex/cons/copy_neg.cc: Same. * testsuite/util/thread/all.h: Testsuite utilities for testing thread. * testsuite/30_threads/condition_variable_any/native_handle/ typesizes.cc: New. * testsuite/30_threads/mutex/native_handle/typesizes.cc: Same. * testsuite/30_threads/timed_mutex/native_handle/typesizes.cc: Same. * testsuite/30_threads/thread/native_handle/typesizes.cc: Same. * testsuite/30_threads/recursive_mutex/native_handle/typesizes.cc: Same. * testsuite/30_threads/condition_variable/native_handle/ typesizes.cc: Same. * testsuite/30_threads/recursive_timed_mutex/native_handle/ typesizes.cc: Same. From-SVN: r144053
2009-02-10 09:29:57 +01:00
{
condition_variable: Use new deleted ctors. 2008-09-03 Chris Fairles <chris.fairles@gmail.com> * include/std/condition_variable: Use new deleted ctors. * include/std/mutex: Likewise plus implement timed_mutex, recursive_timed_mutex and call_once. * src/condition_variable.cc: Implement wait(). Use gthread types. Remove _GTHREADS_HAS_COND checks in favor of global _GLIBCXX_HAS_GTHREADS. * src/mutex.cc (call_once): Implementation using TLS with mutex fallback. * config/abi/pre/gnu.ver: Add exported symbols. * testsuite/lib/libstdc++.exp (check_v3_target_gthreads): New. * testsuite/lib/dg-options.exp (dg-require-gthreads): Likewise. * testsuite/30_threads/lock_guard/requirements/typedefs.cc: Use dg-require-gthreads and dg-require-cstdint. * testsuite/30_threads/lock_guard/requirements/ explicit_instantiation.cc: Likewise. * testsuite/30_threads/mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/mutex/cons/1.cc: Likewise. * testsuite/30_threads/mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/mutex/lock/1.cc: Likewise. * testsuite/30_threads/mutex/unlock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/recursive_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/recursive_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/recursive_mutex/lock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/unique_lock/requirements/ explicit_instantiation.cc: Likewise. * testsuite/30_threads/unique_lock/requirements/typedefs.cc: Likewise. * testsuite/30_threads/mutex/cons/assign_neg.cc: Also adjust dg-error lines for deleted members. * testsuite/30_threads/mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/call_once/once_flag.cc: New. * testsuite/30_threads/call_once/call_once1.cc: Likewise. * testsuite/30_threads/condition_variable/cons/1.cc: Likewise. * testsuite/30_threads/condition_variable/cons/copy_neg.cc: Likewise * testsuite/30_threads/condition_variable/cons/assign_neg.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/1.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/copy_neg.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/assign_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/timed_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_until/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_until/2.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/1.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/timed_mutex/lock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/2.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/3.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_until/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_until/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/lock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/lock/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/3.cc: Likewise. * testsuite/30_threads/unique_lock/modifiers/1.cc: Likewise. * testsuite/30_threads/unique_lock/modifiers/2.cc: Likewise. * testsuite/30_threads/unique_lock/cons/1.cc: Likewise. * testsuite/30_threads/unique_lock/cons/2.cc: Likewise. * testsuite/30_threads/unique_lock/cons/3.cc: Likewise. * testsuite/30_threads/unique_lock/cons/4.cc: Likewise. * testsuite/30_threads/unique_lock/cons/5.cc: Likewise. * testsuite/30_threads/unique_lock/cons/6.cc: Likewise. * testsuite/30_threads/unique_lock/locking/1.cc: Likewise. * testsuite/30_threads/unique_lock/locking/2.cc: Likewise. * testsuite/30_threads/unique_lock/locking/3.cc: Likewise. * testsuite/30_threads/unique_lock/locking/4.cc: Likewise. From-SVN: r139943
2008-09-03 19:46:09 +02:00
chrono::time_point<_Clock, chrono::seconds> __s =
condition_variable (condition_variable): Remove _M_internal_mutex. 2009-02-09 Benjamin Kosnik <bkoz@redhat.com> * include/std/condition_variable (condition_variable): Remove _M_internal_mutex. Add private __native_type typedef. * src/condition_variable.cc (condition_variable::notify_one): Remove _M_internal_mutex use. Use typedef. (condition_variable::notify_all): Same. * include/std/mutex (mutex): Add private __native_type typedef. Use it. (recursive_mutex): Same. (timed_mutex): Same. (recursive_timed_mutex): Same. (once_flag): Make __native_type typedef private. * include/std/thread (this_thread): Add minimal markup. * testsuite/30_threads/condition_variable_any/cons/assign_neg.cc: Adjust line numbers. * testsuite/30_threads/condition_variable_any/cons/copy_neg.cc: Same. * testsuite/30_threads/mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/mutex/cons/copy_neg.cc: Same. * testsuite/30_threads/timed_mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/timed_mutex/cons/copy_neg.cc: Same. * testsuite/30_threads/thread/cons/assign_neg.cc: Same. * testsuite/30_threads/thread/cons/copy_neg.cc: Same. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: Same. * testsuite/30_threads/condition_variable/cons/assign_neg.cc: Same. * testsuite/30_threads/condition_variable/cons/copy_neg.cc: Same. * testsuite/30_threads/recursive_timed_mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/recursive_timed_mutex/cons/copy_neg.cc: Same. * testsuite/util/thread/all.h: Testsuite utilities for testing thread. * testsuite/30_threads/condition_variable_any/native_handle/ typesizes.cc: New. * testsuite/30_threads/mutex/native_handle/typesizes.cc: Same. * testsuite/30_threads/timed_mutex/native_handle/typesizes.cc: Same. * testsuite/30_threads/thread/native_handle/typesizes.cc: Same. * testsuite/30_threads/recursive_mutex/native_handle/typesizes.cc: Same. * testsuite/30_threads/condition_variable/native_handle/ typesizes.cc: Same. * testsuite/30_threads/recursive_timed_mutex/native_handle/ typesizes.cc: Same. From-SVN: r144053
2009-02-10 09:29:57 +01:00
chrono::time_point_cast<chrono::seconds>(__atime);
condition_variable: Use new deleted ctors. 2008-09-03 Chris Fairles <chris.fairles@gmail.com> * include/std/condition_variable: Use new deleted ctors. * include/std/mutex: Likewise plus implement timed_mutex, recursive_timed_mutex and call_once. * src/condition_variable.cc: Implement wait(). Use gthread types. Remove _GTHREADS_HAS_COND checks in favor of global _GLIBCXX_HAS_GTHREADS. * src/mutex.cc (call_once): Implementation using TLS with mutex fallback. * config/abi/pre/gnu.ver: Add exported symbols. * testsuite/lib/libstdc++.exp (check_v3_target_gthreads): New. * testsuite/lib/dg-options.exp (dg-require-gthreads): Likewise. * testsuite/30_threads/lock_guard/requirements/typedefs.cc: Use dg-require-gthreads and dg-require-cstdint. * testsuite/30_threads/lock_guard/requirements/ explicit_instantiation.cc: Likewise. * testsuite/30_threads/mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/mutex/cons/1.cc: Likewise. * testsuite/30_threads/mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/mutex/lock/1.cc: Likewise. * testsuite/30_threads/mutex/unlock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/recursive_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/recursive_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/recursive_mutex/lock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/unique_lock/requirements/ explicit_instantiation.cc: Likewise. * testsuite/30_threads/unique_lock/requirements/typedefs.cc: Likewise. * testsuite/30_threads/mutex/cons/assign_neg.cc: Also adjust dg-error lines for deleted members. * testsuite/30_threads/mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/call_once/once_flag.cc: New. * testsuite/30_threads/call_once/call_once1.cc: Likewise. * testsuite/30_threads/condition_variable/cons/1.cc: Likewise. * testsuite/30_threads/condition_variable/cons/copy_neg.cc: Likewise * testsuite/30_threads/condition_variable/cons/assign_neg.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/1.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/copy_neg.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/assign_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/timed_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_until/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_until/2.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/1.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/timed_mutex/lock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/2.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/3.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_until/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_until/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/lock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/lock/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/3.cc: Likewise. * testsuite/30_threads/unique_lock/modifiers/1.cc: Likewise. * testsuite/30_threads/unique_lock/modifiers/2.cc: Likewise. * testsuite/30_threads/unique_lock/cons/1.cc: Likewise. * testsuite/30_threads/unique_lock/cons/2.cc: Likewise. * testsuite/30_threads/unique_lock/cons/3.cc: Likewise. * testsuite/30_threads/unique_lock/cons/4.cc: Likewise. * testsuite/30_threads/unique_lock/cons/5.cc: Likewise. * testsuite/30_threads/unique_lock/cons/6.cc: Likewise. * testsuite/30_threads/unique_lock/locking/1.cc: Likewise. * testsuite/30_threads/unique_lock/locking/2.cc: Likewise. * testsuite/30_threads/unique_lock/locking/3.cc: Likewise. * testsuite/30_threads/unique_lock/locking/4.cc: Likewise. From-SVN: r139943
2008-09-03 19:46:09 +02:00
chrono::nanoseconds __ns =
condition_variable (condition_variable): Remove _M_internal_mutex. 2009-02-09 Benjamin Kosnik <bkoz@redhat.com> * include/std/condition_variable (condition_variable): Remove _M_internal_mutex. Add private __native_type typedef. * src/condition_variable.cc (condition_variable::notify_one): Remove _M_internal_mutex use. Use typedef. (condition_variable::notify_all): Same. * include/std/mutex (mutex): Add private __native_type typedef. Use it. (recursive_mutex): Same. (timed_mutex): Same. (recursive_timed_mutex): Same. (once_flag): Make __native_type typedef private. * include/std/thread (this_thread): Add minimal markup. * testsuite/30_threads/condition_variable_any/cons/assign_neg.cc: Adjust line numbers. * testsuite/30_threads/condition_variable_any/cons/copy_neg.cc: Same. * testsuite/30_threads/mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/mutex/cons/copy_neg.cc: Same. * testsuite/30_threads/timed_mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/timed_mutex/cons/copy_neg.cc: Same. * testsuite/30_threads/thread/cons/assign_neg.cc: Same. * testsuite/30_threads/thread/cons/copy_neg.cc: Same. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: Same. * testsuite/30_threads/condition_variable/cons/assign_neg.cc: Same. * testsuite/30_threads/condition_variable/cons/copy_neg.cc: Same. * testsuite/30_threads/recursive_timed_mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/recursive_timed_mutex/cons/copy_neg.cc: Same. * testsuite/util/thread/all.h: Testsuite utilities for testing thread. * testsuite/30_threads/condition_variable_any/native_handle/ typesizes.cc: New. * testsuite/30_threads/mutex/native_handle/typesizes.cc: Same. * testsuite/30_threads/timed_mutex/native_handle/typesizes.cc: Same. * testsuite/30_threads/thread/native_handle/typesizes.cc: Same. * testsuite/30_threads/recursive_mutex/native_handle/typesizes.cc: Same. * testsuite/30_threads/condition_variable/native_handle/ typesizes.cc: Same. * testsuite/30_threads/recursive_timed_mutex/native_handle/ typesizes.cc: Same. From-SVN: r144053
2009-02-10 09:29:57 +01:00
chrono::duration_cast<chrono::nanoseconds>(__atime - __s);
condition_variable: Use new deleted ctors. 2008-09-03 Chris Fairles <chris.fairles@gmail.com> * include/std/condition_variable: Use new deleted ctors. * include/std/mutex: Likewise plus implement timed_mutex, recursive_timed_mutex and call_once. * src/condition_variable.cc: Implement wait(). Use gthread types. Remove _GTHREADS_HAS_COND checks in favor of global _GLIBCXX_HAS_GTHREADS. * src/mutex.cc (call_once): Implementation using TLS with mutex fallback. * config/abi/pre/gnu.ver: Add exported symbols. * testsuite/lib/libstdc++.exp (check_v3_target_gthreads): New. * testsuite/lib/dg-options.exp (dg-require-gthreads): Likewise. * testsuite/30_threads/lock_guard/requirements/typedefs.cc: Use dg-require-gthreads and dg-require-cstdint. * testsuite/30_threads/lock_guard/requirements/ explicit_instantiation.cc: Likewise. * testsuite/30_threads/mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/mutex/cons/1.cc: Likewise. * testsuite/30_threads/mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/mutex/lock/1.cc: Likewise. * testsuite/30_threads/mutex/unlock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/recursive_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/recursive_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/recursive_mutex/lock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/unique_lock/requirements/ explicit_instantiation.cc: Likewise. * testsuite/30_threads/unique_lock/requirements/typedefs.cc: Likewise. * testsuite/30_threads/mutex/cons/assign_neg.cc: Also adjust dg-error lines for deleted members. * testsuite/30_threads/mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/call_once/once_flag.cc: New. * testsuite/30_threads/call_once/call_once1.cc: Likewise. * testsuite/30_threads/condition_variable/cons/1.cc: Likewise. * testsuite/30_threads/condition_variable/cons/copy_neg.cc: Likewise * testsuite/30_threads/condition_variable/cons/assign_neg.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/1.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/copy_neg.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/assign_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/timed_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_until/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_until/2.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/1.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/timed_mutex/lock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/2.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/3.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_until/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_until/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/lock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/lock/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/3.cc: Likewise. * testsuite/30_threads/unique_lock/modifiers/1.cc: Likewise. * testsuite/30_threads/unique_lock/modifiers/2.cc: Likewise. * testsuite/30_threads/unique_lock/cons/1.cc: Likewise. * testsuite/30_threads/unique_lock/cons/2.cc: Likewise. * testsuite/30_threads/unique_lock/cons/3.cc: Likewise. * testsuite/30_threads/unique_lock/cons/4.cc: Likewise. * testsuite/30_threads/unique_lock/cons/5.cc: Likewise. * testsuite/30_threads/unique_lock/cons/6.cc: Likewise. * testsuite/30_threads/unique_lock/locking/1.cc: Likewise. * testsuite/30_threads/unique_lock/locking/2.cc: Likewise. * testsuite/30_threads/unique_lock/locking/3.cc: Likewise. * testsuite/30_threads/unique_lock/locking/4.cc: Likewise. From-SVN: r139943
2008-09-03 19:46:09 +02:00
condition_variable (condition_variable): Remove _M_internal_mutex. 2009-02-09 Benjamin Kosnik <bkoz@redhat.com> * include/std/condition_variable (condition_variable): Remove _M_internal_mutex. Add private __native_type typedef. * src/condition_variable.cc (condition_variable::notify_one): Remove _M_internal_mutex use. Use typedef. (condition_variable::notify_all): Same. * include/std/mutex (mutex): Add private __native_type typedef. Use it. (recursive_mutex): Same. (timed_mutex): Same. (recursive_timed_mutex): Same. (once_flag): Make __native_type typedef private. * include/std/thread (this_thread): Add minimal markup. * testsuite/30_threads/condition_variable_any/cons/assign_neg.cc: Adjust line numbers. * testsuite/30_threads/condition_variable_any/cons/copy_neg.cc: Same. * testsuite/30_threads/mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/mutex/cons/copy_neg.cc: Same. * testsuite/30_threads/timed_mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/timed_mutex/cons/copy_neg.cc: Same. * testsuite/30_threads/thread/cons/assign_neg.cc: Same. * testsuite/30_threads/thread/cons/copy_neg.cc: Same. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: Same. * testsuite/30_threads/condition_variable/cons/assign_neg.cc: Same. * testsuite/30_threads/condition_variable/cons/copy_neg.cc: Same. * testsuite/30_threads/recursive_timed_mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/recursive_timed_mutex/cons/copy_neg.cc: Same. * testsuite/util/thread/all.h: Testsuite utilities for testing thread. * testsuite/30_threads/condition_variable_any/native_handle/ typesizes.cc: New. * testsuite/30_threads/mutex/native_handle/typesizes.cc: Same. * testsuite/30_threads/timed_mutex/native_handle/typesizes.cc: Same. * testsuite/30_threads/thread/native_handle/typesizes.cc: Same. * testsuite/30_threads/recursive_mutex/native_handle/typesizes.cc: Same. * testsuite/30_threads/condition_variable/native_handle/ typesizes.cc: Same. * testsuite/30_threads/recursive_timed_mutex/native_handle/ typesizes.cc: Same. From-SVN: r144053
2009-02-10 09:29:57 +01:00
__gthread_time_t __ts = {
static_cast<std::time_t>(__s.time_since_epoch().count()),
static_cast<long>(__ns.count())
};
condition_variable: New. 2008-05-06 Benjamin Kosnik <bkoz@redhat.com> * include/std/condition_variable: New. * include/std/mutex: New. * src/condition_variable.cc: New. * src/mutex.cc: New. * include/bits/functexcept.h: Add __throw_system_error varients. * src/functexcept.cc: Same. * config/abi/pre/gnu.ver: Add exports. * doc/xml/manual/using.xml: Add new includes. * doc/doxygen/user.cfg.in: Doxygen support. * doc/doxygen/doxygroups.cc: Same. * include/Makefile.am: Add mutex, condition_variable. * include/Makefile.in: Regenerated. * src/Makefile.am: Add mutex.cc, condition_variable.cc. * src/Makefile.in: Regenerated. * testsuite/30_threads: New. * testsuite/30_threads/lock_error: New. * testsuite/30_threads/mutex: New. * testsuite/30_threads/mutex/dest: New. * testsuite/30_threads/mutex/dest/destructor_locked.cc: New. * testsuite/30_threads/mutex/native_handle: New. * testsuite/30_threads/mutex/native_handle/1.cc: New. * testsuite/30_threads/mutex/cons: New. * testsuite/30_threads/mutex/cons/assign_neg.cc: New. * testsuite/30_threads/mutex/cons/1.cc: New. * testsuite/30_threads/mutex/cons/copy_neg.cc: New. * testsuite/30_threads/mutex/requirements: New. * testsuite/30_threads/mutex/requirements/typedefs.cc: New. * testsuite/30_threads/mutex/try_lock: New. * testsuite/30_threads/mutex/try_lock/1.cc: New. * testsuite/30_threads/mutex/try_lock/2.cc: New. * testsuite/30_threads/mutex/lock: New. * testsuite/30_threads/mutex/lock/1.cc: New. * testsuite/30_threads/mutex/unlock: New. * testsuite/30_threads/mutex/unlock/1.cc: New. * testsuite/30_threads/recursive_mutex: New. * testsuite/30_threads/recursive_mutex/dest: New. * testsuite/30_threads/recursive_mutex/dest/destructor_locked.cc: New. * testsuite/30_threads/recursive_mutex/native_handle: New. * testsuite/30_threads/recursive_mutex/native_handle/1.cc: New. * testsuite/30_threads/recursive_mutex/cons: New. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: New. * testsuite/30_threads/recursive_mutex/cons/1.cc: New. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: New. * testsuite/30_threads/recursive_mutex/requirements: New. * testsuite/30_threads/recursive_mutex/requirements/typedefs.cc: New. * testsuite/30_threads/lock_guard: New. * testsuite/30_threads/lock_guard/requirements: New. * testsuite/30_threads/lock_guard/requirements/typedefs.cc: New. * testsuite/30_threads/lock_guard/requirements/ explicit_instantiation.cc: New. * testsuite/30_threads/headers: New. * testsuite/30_threads/headers/mutex: New. * testsuite/30_threads/headers/mutex/types_std_c++0x.cc: New. * testsuite/30_threads/headers/mutex/std_c++0x_neg.cc: New. * testsuite/30_threads/headers/condition_variable: New. * testsuite/30_threads/headers/condition_variable/ types_std_c++0x.cc: New. * testsuite/30_threads/headers/condition_variable/std_c++0x_neg.cc: New. * testsuite/30_threads/once_flag: New. * testsuite/30_threads/unique_lock: New. * testsuite/30_threads/unique_lock/requirements: New. * testsuite/30_threads/unique_lock/requirements/typedefs.cc: New. * testsuite/30_threads/unique_lock/requirements/ explicit_instantiation.cc: New. * testsuite/17_intro/headers/c++200x/all.cc: Add new includes. From-SVN: r135007
2008-05-06 23:11:47 +02:00
condition_variable (condition_variable): Remove _M_internal_mutex. 2009-02-09 Benjamin Kosnik <bkoz@redhat.com> * include/std/condition_variable (condition_variable): Remove _M_internal_mutex. Add private __native_type typedef. * src/condition_variable.cc (condition_variable::notify_one): Remove _M_internal_mutex use. Use typedef. (condition_variable::notify_all): Same. * include/std/mutex (mutex): Add private __native_type typedef. Use it. (recursive_mutex): Same. (timed_mutex): Same. (recursive_timed_mutex): Same. (once_flag): Make __native_type typedef private. * include/std/thread (this_thread): Add minimal markup. * testsuite/30_threads/condition_variable_any/cons/assign_neg.cc: Adjust line numbers. * testsuite/30_threads/condition_variable_any/cons/copy_neg.cc: Same. * testsuite/30_threads/mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/mutex/cons/copy_neg.cc: Same. * testsuite/30_threads/timed_mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/timed_mutex/cons/copy_neg.cc: Same. * testsuite/30_threads/thread/cons/assign_neg.cc: Same. * testsuite/30_threads/thread/cons/copy_neg.cc: Same. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: Same. * testsuite/30_threads/condition_variable/cons/assign_neg.cc: Same. * testsuite/30_threads/condition_variable/cons/copy_neg.cc: Same. * testsuite/30_threads/recursive_timed_mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/recursive_timed_mutex/cons/copy_neg.cc: Same. * testsuite/util/thread/all.h: Testsuite utilities for testing thread. * testsuite/30_threads/condition_variable_any/native_handle/ typesizes.cc: New. * testsuite/30_threads/mutex/native_handle/typesizes.cc: Same. * testsuite/30_threads/timed_mutex/native_handle/typesizes.cc: Same. * testsuite/30_threads/thread/native_handle/typesizes.cc: Same. * testsuite/30_threads/recursive_mutex/native_handle/typesizes.cc: Same. * testsuite/30_threads/condition_variable/native_handle/ typesizes.cc: Same. * testsuite/30_threads/recursive_timed_mutex/native_handle/ typesizes.cc: Same. From-SVN: r144053
2009-02-10 09:29:57 +01:00
return !__gthread_mutex_timedlock(&_M_mutex, &__ts);
condition_variable: Use new deleted ctors. 2008-09-03 Chris Fairles <chris.fairles@gmail.com> * include/std/condition_variable: Use new deleted ctors. * include/std/mutex: Likewise plus implement timed_mutex, recursive_timed_mutex and call_once. * src/condition_variable.cc: Implement wait(). Use gthread types. Remove _GTHREADS_HAS_COND checks in favor of global _GLIBCXX_HAS_GTHREADS. * src/mutex.cc (call_once): Implementation using TLS with mutex fallback. * config/abi/pre/gnu.ver: Add exported symbols. * testsuite/lib/libstdc++.exp (check_v3_target_gthreads): New. * testsuite/lib/dg-options.exp (dg-require-gthreads): Likewise. * testsuite/30_threads/lock_guard/requirements/typedefs.cc: Use dg-require-gthreads and dg-require-cstdint. * testsuite/30_threads/lock_guard/requirements/ explicit_instantiation.cc: Likewise. * testsuite/30_threads/mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/mutex/cons/1.cc: Likewise. * testsuite/30_threads/mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/mutex/lock/1.cc: Likewise. * testsuite/30_threads/mutex/unlock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/recursive_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/recursive_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/recursive_mutex/lock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/unique_lock/requirements/ explicit_instantiation.cc: Likewise. * testsuite/30_threads/unique_lock/requirements/typedefs.cc: Likewise. * testsuite/30_threads/mutex/cons/assign_neg.cc: Also adjust dg-error lines for deleted members. * testsuite/30_threads/mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/call_once/once_flag.cc: New. * testsuite/30_threads/call_once/call_once1.cc: Likewise. * testsuite/30_threads/condition_variable/cons/1.cc: Likewise. * testsuite/30_threads/condition_variable/cons/copy_neg.cc: Likewise * testsuite/30_threads/condition_variable/cons/assign_neg.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/1.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/copy_neg.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/assign_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/timed_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_until/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_until/2.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/1.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/timed_mutex/lock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/2.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/3.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_until/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_until/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/lock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/lock/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/3.cc: Likewise. * testsuite/30_threads/unique_lock/modifiers/1.cc: Likewise. * testsuite/30_threads/unique_lock/modifiers/2.cc: Likewise. * testsuite/30_threads/unique_lock/cons/1.cc: Likewise. * testsuite/30_threads/unique_lock/cons/2.cc: Likewise. * testsuite/30_threads/unique_lock/cons/3.cc: Likewise. * testsuite/30_threads/unique_lock/cons/4.cc: Likewise. * testsuite/30_threads/unique_lock/cons/5.cc: Likewise. * testsuite/30_threads/unique_lock/cons/6.cc: Likewise. * testsuite/30_threads/unique_lock/locking/1.cc: Likewise. * testsuite/30_threads/unique_lock/locking/2.cc: Likewise. * testsuite/30_threads/unique_lock/locking/3.cc: Likewise. * testsuite/30_threads/unique_lock/locking/4.cc: Likewise. From-SVN: r139943
2008-09-03 19:46:09 +02:00
}
void
unlock()
{
// XXX EINVAL, EAGAIN, EBUSY
__gthread_mutex_unlock(&_M_mutex);
}
native_handle_type
native_handle()
condition_variable: Use new deleted ctors. 2008-09-03 Chris Fairles <chris.fairles@gmail.com> * include/std/condition_variable: Use new deleted ctors. * include/std/mutex: Likewise plus implement timed_mutex, recursive_timed_mutex and call_once. * src/condition_variable.cc: Implement wait(). Use gthread types. Remove _GTHREADS_HAS_COND checks in favor of global _GLIBCXX_HAS_GTHREADS. * src/mutex.cc (call_once): Implementation using TLS with mutex fallback. * config/abi/pre/gnu.ver: Add exported symbols. * testsuite/lib/libstdc++.exp (check_v3_target_gthreads): New. * testsuite/lib/dg-options.exp (dg-require-gthreads): Likewise. * testsuite/30_threads/lock_guard/requirements/typedefs.cc: Use dg-require-gthreads and dg-require-cstdint. * testsuite/30_threads/lock_guard/requirements/ explicit_instantiation.cc: Likewise. * testsuite/30_threads/mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/mutex/cons/1.cc: Likewise. * testsuite/30_threads/mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/mutex/lock/1.cc: Likewise. * testsuite/30_threads/mutex/unlock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/recursive_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/recursive_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/recursive_mutex/lock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/unique_lock/requirements/ explicit_instantiation.cc: Likewise. * testsuite/30_threads/unique_lock/requirements/typedefs.cc: Likewise. * testsuite/30_threads/mutex/cons/assign_neg.cc: Also adjust dg-error lines for deleted members. * testsuite/30_threads/mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/call_once/once_flag.cc: New. * testsuite/30_threads/call_once/call_once1.cc: Likewise. * testsuite/30_threads/condition_variable/cons/1.cc: Likewise. * testsuite/30_threads/condition_variable/cons/copy_neg.cc: Likewise * testsuite/30_threads/condition_variable/cons/assign_neg.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/1.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/copy_neg.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/assign_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/timed_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_until/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_until/2.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/1.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/timed_mutex/lock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/2.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/3.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_until/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_until/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/lock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/lock/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/3.cc: Likewise. * testsuite/30_threads/unique_lock/modifiers/1.cc: Likewise. * testsuite/30_threads/unique_lock/modifiers/2.cc: Likewise. * testsuite/30_threads/unique_lock/cons/1.cc: Likewise. * testsuite/30_threads/unique_lock/cons/2.cc: Likewise. * testsuite/30_threads/unique_lock/cons/3.cc: Likewise. * testsuite/30_threads/unique_lock/cons/4.cc: Likewise. * testsuite/30_threads/unique_lock/cons/5.cc: Likewise. * testsuite/30_threads/unique_lock/cons/6.cc: Likewise. * testsuite/30_threads/unique_lock/locking/1.cc: Likewise. * testsuite/30_threads/unique_lock/locking/2.cc: Likewise. * testsuite/30_threads/unique_lock/locking/3.cc: Likewise. * testsuite/30_threads/unique_lock/locking/4.cc: Likewise. From-SVN: r139943
2008-09-03 19:46:09 +02:00
{ return &_M_mutex; }
condition_variable (condition_variable): Remove _M_internal_mutex. 2009-02-09 Benjamin Kosnik <bkoz@redhat.com> * include/std/condition_variable (condition_variable): Remove _M_internal_mutex. Add private __native_type typedef. * src/condition_variable.cc (condition_variable::notify_one): Remove _M_internal_mutex use. Use typedef. (condition_variable::notify_all): Same. * include/std/mutex (mutex): Add private __native_type typedef. Use it. (recursive_mutex): Same. (timed_mutex): Same. (recursive_timed_mutex): Same. (once_flag): Make __native_type typedef private. * include/std/thread (this_thread): Add minimal markup. * testsuite/30_threads/condition_variable_any/cons/assign_neg.cc: Adjust line numbers. * testsuite/30_threads/condition_variable_any/cons/copy_neg.cc: Same. * testsuite/30_threads/mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/mutex/cons/copy_neg.cc: Same. * testsuite/30_threads/timed_mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/timed_mutex/cons/copy_neg.cc: Same. * testsuite/30_threads/thread/cons/assign_neg.cc: Same. * testsuite/30_threads/thread/cons/copy_neg.cc: Same. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: Same. * testsuite/30_threads/condition_variable/cons/assign_neg.cc: Same. * testsuite/30_threads/condition_variable/cons/copy_neg.cc: Same. * testsuite/30_threads/recursive_timed_mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/recursive_timed_mutex/cons/copy_neg.cc: Same. * testsuite/util/thread/all.h: Testsuite utilities for testing thread. * testsuite/30_threads/condition_variable_any/native_handle/ typesizes.cc: New. * testsuite/30_threads/mutex/native_handle/typesizes.cc: Same. * testsuite/30_threads/timed_mutex/native_handle/typesizes.cc: Same. * testsuite/30_threads/thread/native_handle/typesizes.cc: Same. * testsuite/30_threads/recursive_mutex/native_handle/typesizes.cc: Same. * testsuite/30_threads/condition_variable/native_handle/ typesizes.cc: Same. * testsuite/30_threads/recursive_timed_mutex/native_handle/ typesizes.cc: Same. From-SVN: r144053
2009-02-10 09:29:57 +01:00
private:
condition_variable: Use new deleted ctors. 2008-09-03 Chris Fairles <chris.fairles@gmail.com> * include/std/condition_variable: Use new deleted ctors. * include/std/mutex: Likewise plus implement timed_mutex, recursive_timed_mutex and call_once. * src/condition_variable.cc: Implement wait(). Use gthread types. Remove _GTHREADS_HAS_COND checks in favor of global _GLIBCXX_HAS_GTHREADS. * src/mutex.cc (call_once): Implementation using TLS with mutex fallback. * config/abi/pre/gnu.ver: Add exported symbols. * testsuite/lib/libstdc++.exp (check_v3_target_gthreads): New. * testsuite/lib/dg-options.exp (dg-require-gthreads): Likewise. * testsuite/30_threads/lock_guard/requirements/typedefs.cc: Use dg-require-gthreads and dg-require-cstdint. * testsuite/30_threads/lock_guard/requirements/ explicit_instantiation.cc: Likewise. * testsuite/30_threads/mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/mutex/cons/1.cc: Likewise. * testsuite/30_threads/mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/mutex/lock/1.cc: Likewise. * testsuite/30_threads/mutex/unlock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/recursive_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/recursive_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/recursive_mutex/lock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/unique_lock/requirements/ explicit_instantiation.cc: Likewise. * testsuite/30_threads/unique_lock/requirements/typedefs.cc: Likewise. * testsuite/30_threads/mutex/cons/assign_neg.cc: Also adjust dg-error lines for deleted members. * testsuite/30_threads/mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/call_once/once_flag.cc: New. * testsuite/30_threads/call_once/call_once1.cc: Likewise. * testsuite/30_threads/condition_variable/cons/1.cc: Likewise. * testsuite/30_threads/condition_variable/cons/copy_neg.cc: Likewise * testsuite/30_threads/condition_variable/cons/assign_neg.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/1.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/copy_neg.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/assign_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/timed_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_until/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_until/2.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/1.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/timed_mutex/lock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/2.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/3.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_until/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_until/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/lock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/lock/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/3.cc: Likewise. * testsuite/30_threads/unique_lock/modifiers/1.cc: Likewise. * testsuite/30_threads/unique_lock/modifiers/2.cc: Likewise. * testsuite/30_threads/unique_lock/cons/1.cc: Likewise. * testsuite/30_threads/unique_lock/cons/2.cc: Likewise. * testsuite/30_threads/unique_lock/cons/3.cc: Likewise. * testsuite/30_threads/unique_lock/cons/4.cc: Likewise. * testsuite/30_threads/unique_lock/cons/5.cc: Likewise. * testsuite/30_threads/unique_lock/cons/6.cc: Likewise. * testsuite/30_threads/unique_lock/locking/1.cc: Likewise. * testsuite/30_threads/unique_lock/locking/2.cc: Likewise. * testsuite/30_threads/unique_lock/locking/3.cc: Likewise. * testsuite/30_threads/unique_lock/locking/4.cc: Likewise. From-SVN: r139943
2008-09-03 19:46:09 +02:00
template<typename _Rep, typename _Period>
typename enable_if<
condition_variable (condition_variable): Remove _M_internal_mutex. 2009-02-09 Benjamin Kosnik <bkoz@redhat.com> * include/std/condition_variable (condition_variable): Remove _M_internal_mutex. Add private __native_type typedef. * src/condition_variable.cc (condition_variable::notify_one): Remove _M_internal_mutex use. Use typedef. (condition_variable::notify_all): Same. * include/std/mutex (mutex): Add private __native_type typedef. Use it. (recursive_mutex): Same. (timed_mutex): Same. (recursive_timed_mutex): Same. (once_flag): Make __native_type typedef private. * include/std/thread (this_thread): Add minimal markup. * testsuite/30_threads/condition_variable_any/cons/assign_neg.cc: Adjust line numbers. * testsuite/30_threads/condition_variable_any/cons/copy_neg.cc: Same. * testsuite/30_threads/mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/mutex/cons/copy_neg.cc: Same. * testsuite/30_threads/timed_mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/timed_mutex/cons/copy_neg.cc: Same. * testsuite/30_threads/thread/cons/assign_neg.cc: Same. * testsuite/30_threads/thread/cons/copy_neg.cc: Same. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: Same. * testsuite/30_threads/condition_variable/cons/assign_neg.cc: Same. * testsuite/30_threads/condition_variable/cons/copy_neg.cc: Same. * testsuite/30_threads/recursive_timed_mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/recursive_timed_mutex/cons/copy_neg.cc: Same. * testsuite/util/thread/all.h: Testsuite utilities for testing thread. * testsuite/30_threads/condition_variable_any/native_handle/ typesizes.cc: New. * testsuite/30_threads/mutex/native_handle/typesizes.cc: Same. * testsuite/30_threads/timed_mutex/native_handle/typesizes.cc: Same. * testsuite/30_threads/thread/native_handle/typesizes.cc: Same. * testsuite/30_threads/recursive_mutex/native_handle/typesizes.cc: Same. * testsuite/30_threads/condition_variable/native_handle/ typesizes.cc: Same. * testsuite/30_threads/recursive_timed_mutex/native_handle/ typesizes.cc: Same. From-SVN: r144053
2009-02-10 09:29:57 +01:00
ratio_less_equal<__clock_t::period, _Period>::value, bool>::type
condition_variable: Use new deleted ctors. 2008-09-03 Chris Fairles <chris.fairles@gmail.com> * include/std/condition_variable: Use new deleted ctors. * include/std/mutex: Likewise plus implement timed_mutex, recursive_timed_mutex and call_once. * src/condition_variable.cc: Implement wait(). Use gthread types. Remove _GTHREADS_HAS_COND checks in favor of global _GLIBCXX_HAS_GTHREADS. * src/mutex.cc (call_once): Implementation using TLS with mutex fallback. * config/abi/pre/gnu.ver: Add exported symbols. * testsuite/lib/libstdc++.exp (check_v3_target_gthreads): New. * testsuite/lib/dg-options.exp (dg-require-gthreads): Likewise. * testsuite/30_threads/lock_guard/requirements/typedefs.cc: Use dg-require-gthreads and dg-require-cstdint. * testsuite/30_threads/lock_guard/requirements/ explicit_instantiation.cc: Likewise. * testsuite/30_threads/mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/mutex/cons/1.cc: Likewise. * testsuite/30_threads/mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/mutex/lock/1.cc: Likewise. * testsuite/30_threads/mutex/unlock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/recursive_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/recursive_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/recursive_mutex/lock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/unique_lock/requirements/ explicit_instantiation.cc: Likewise. * testsuite/30_threads/unique_lock/requirements/typedefs.cc: Likewise. * testsuite/30_threads/mutex/cons/assign_neg.cc: Also adjust dg-error lines for deleted members. * testsuite/30_threads/mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/call_once/once_flag.cc: New. * testsuite/30_threads/call_once/call_once1.cc: Likewise. * testsuite/30_threads/condition_variable/cons/1.cc: Likewise. * testsuite/30_threads/condition_variable/cons/copy_neg.cc: Likewise * testsuite/30_threads/condition_variable/cons/assign_neg.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/1.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/copy_neg.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/assign_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/timed_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_until/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_until/2.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/1.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/timed_mutex/lock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/2.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/3.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_until/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_until/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/lock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/lock/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/3.cc: Likewise. * testsuite/30_threads/unique_lock/modifiers/1.cc: Likewise. * testsuite/30_threads/unique_lock/modifiers/2.cc: Likewise. * testsuite/30_threads/unique_lock/cons/1.cc: Likewise. * testsuite/30_threads/unique_lock/cons/2.cc: Likewise. * testsuite/30_threads/unique_lock/cons/3.cc: Likewise. * testsuite/30_threads/unique_lock/cons/4.cc: Likewise. * testsuite/30_threads/unique_lock/cons/5.cc: Likewise. * testsuite/30_threads/unique_lock/cons/6.cc: Likewise. * testsuite/30_threads/unique_lock/locking/1.cc: Likewise. * testsuite/30_threads/unique_lock/locking/2.cc: Likewise. * testsuite/30_threads/unique_lock/locking/3.cc: Likewise. * testsuite/30_threads/unique_lock/locking/4.cc: Likewise. From-SVN: r139943
2008-09-03 19:46:09 +02:00
__try_lock_for_impl(const chrono::duration<_Rep, _Period>& __rtime)
{
condition_variable (condition_variable): Remove _M_internal_mutex. 2009-02-09 Benjamin Kosnik <bkoz@redhat.com> * include/std/condition_variable (condition_variable): Remove _M_internal_mutex. Add private __native_type typedef. * src/condition_variable.cc (condition_variable::notify_one): Remove _M_internal_mutex use. Use typedef. (condition_variable::notify_all): Same. * include/std/mutex (mutex): Add private __native_type typedef. Use it. (recursive_mutex): Same. (timed_mutex): Same. (recursive_timed_mutex): Same. (once_flag): Make __native_type typedef private. * include/std/thread (this_thread): Add minimal markup. * testsuite/30_threads/condition_variable_any/cons/assign_neg.cc: Adjust line numbers. * testsuite/30_threads/condition_variable_any/cons/copy_neg.cc: Same. * testsuite/30_threads/mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/mutex/cons/copy_neg.cc: Same. * testsuite/30_threads/timed_mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/timed_mutex/cons/copy_neg.cc: Same. * testsuite/30_threads/thread/cons/assign_neg.cc: Same. * testsuite/30_threads/thread/cons/copy_neg.cc: Same. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: Same. * testsuite/30_threads/condition_variable/cons/assign_neg.cc: Same. * testsuite/30_threads/condition_variable/cons/copy_neg.cc: Same. * testsuite/30_threads/recursive_timed_mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/recursive_timed_mutex/cons/copy_neg.cc: Same. * testsuite/util/thread/all.h: Testsuite utilities for testing thread. * testsuite/30_threads/condition_variable_any/native_handle/ typesizes.cc: New. * testsuite/30_threads/mutex/native_handle/typesizes.cc: Same. * testsuite/30_threads/timed_mutex/native_handle/typesizes.cc: Same. * testsuite/30_threads/thread/native_handle/typesizes.cc: Same. * testsuite/30_threads/recursive_mutex/native_handle/typesizes.cc: Same. * testsuite/30_threads/condition_variable/native_handle/ typesizes.cc: Same. * testsuite/30_threads/recursive_timed_mutex/native_handle/ typesizes.cc: Same. From-SVN: r144053
2009-02-10 09:29:57 +01:00
__clock_t::time_point __atime = __clock_t::now()
+ chrono::duration_cast<__clock_t::duration>(__rtime);
condition_variable: Use new deleted ctors. 2008-09-03 Chris Fairles <chris.fairles@gmail.com> * include/std/condition_variable: Use new deleted ctors. * include/std/mutex: Likewise plus implement timed_mutex, recursive_timed_mutex and call_once. * src/condition_variable.cc: Implement wait(). Use gthread types. Remove _GTHREADS_HAS_COND checks in favor of global _GLIBCXX_HAS_GTHREADS. * src/mutex.cc (call_once): Implementation using TLS with mutex fallback. * config/abi/pre/gnu.ver: Add exported symbols. * testsuite/lib/libstdc++.exp (check_v3_target_gthreads): New. * testsuite/lib/dg-options.exp (dg-require-gthreads): Likewise. * testsuite/30_threads/lock_guard/requirements/typedefs.cc: Use dg-require-gthreads and dg-require-cstdint. * testsuite/30_threads/lock_guard/requirements/ explicit_instantiation.cc: Likewise. * testsuite/30_threads/mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/mutex/cons/1.cc: Likewise. * testsuite/30_threads/mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/mutex/lock/1.cc: Likewise. * testsuite/30_threads/mutex/unlock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/recursive_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/recursive_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/recursive_mutex/lock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/unique_lock/requirements/ explicit_instantiation.cc: Likewise. * testsuite/30_threads/unique_lock/requirements/typedefs.cc: Likewise. * testsuite/30_threads/mutex/cons/assign_neg.cc: Also adjust dg-error lines for deleted members. * testsuite/30_threads/mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/call_once/once_flag.cc: New. * testsuite/30_threads/call_once/call_once1.cc: Likewise. * testsuite/30_threads/condition_variable/cons/1.cc: Likewise. * testsuite/30_threads/condition_variable/cons/copy_neg.cc: Likewise * testsuite/30_threads/condition_variable/cons/assign_neg.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/1.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/copy_neg.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/assign_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/timed_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_until/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_until/2.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/1.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/timed_mutex/lock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/2.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/3.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_until/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_until/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/lock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/lock/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/3.cc: Likewise. * testsuite/30_threads/unique_lock/modifiers/1.cc: Likewise. * testsuite/30_threads/unique_lock/modifiers/2.cc: Likewise. * testsuite/30_threads/unique_lock/cons/1.cc: Likewise. * testsuite/30_threads/unique_lock/cons/2.cc: Likewise. * testsuite/30_threads/unique_lock/cons/3.cc: Likewise. * testsuite/30_threads/unique_lock/cons/4.cc: Likewise. * testsuite/30_threads/unique_lock/cons/5.cc: Likewise. * testsuite/30_threads/unique_lock/cons/6.cc: Likewise. * testsuite/30_threads/unique_lock/locking/1.cc: Likewise. * testsuite/30_threads/unique_lock/locking/2.cc: Likewise. * testsuite/30_threads/unique_lock/locking/3.cc: Likewise. * testsuite/30_threads/unique_lock/locking/4.cc: Likewise. From-SVN: r139943
2008-09-03 19:46:09 +02:00
condition_variable (condition_variable): Remove _M_internal_mutex. 2009-02-09 Benjamin Kosnik <bkoz@redhat.com> * include/std/condition_variable (condition_variable): Remove _M_internal_mutex. Add private __native_type typedef. * src/condition_variable.cc (condition_variable::notify_one): Remove _M_internal_mutex use. Use typedef. (condition_variable::notify_all): Same. * include/std/mutex (mutex): Add private __native_type typedef. Use it. (recursive_mutex): Same. (timed_mutex): Same. (recursive_timed_mutex): Same. (once_flag): Make __native_type typedef private. * include/std/thread (this_thread): Add minimal markup. * testsuite/30_threads/condition_variable_any/cons/assign_neg.cc: Adjust line numbers. * testsuite/30_threads/condition_variable_any/cons/copy_neg.cc: Same. * testsuite/30_threads/mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/mutex/cons/copy_neg.cc: Same. * testsuite/30_threads/timed_mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/timed_mutex/cons/copy_neg.cc: Same. * testsuite/30_threads/thread/cons/assign_neg.cc: Same. * testsuite/30_threads/thread/cons/copy_neg.cc: Same. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: Same. * testsuite/30_threads/condition_variable/cons/assign_neg.cc: Same. * testsuite/30_threads/condition_variable/cons/copy_neg.cc: Same. * testsuite/30_threads/recursive_timed_mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/recursive_timed_mutex/cons/copy_neg.cc: Same. * testsuite/util/thread/all.h: Testsuite utilities for testing thread. * testsuite/30_threads/condition_variable_any/native_handle/ typesizes.cc: New. * testsuite/30_threads/mutex/native_handle/typesizes.cc: Same. * testsuite/30_threads/timed_mutex/native_handle/typesizes.cc: Same. * testsuite/30_threads/thread/native_handle/typesizes.cc: Same. * testsuite/30_threads/recursive_mutex/native_handle/typesizes.cc: Same. * testsuite/30_threads/condition_variable/native_handle/ typesizes.cc: Same. * testsuite/30_threads/recursive_timed_mutex/native_handle/ typesizes.cc: Same. From-SVN: r144053
2009-02-10 09:29:57 +01:00
return try_lock_until(__atime);
condition_variable: Use new deleted ctors. 2008-09-03 Chris Fairles <chris.fairles@gmail.com> * include/std/condition_variable: Use new deleted ctors. * include/std/mutex: Likewise plus implement timed_mutex, recursive_timed_mutex and call_once. * src/condition_variable.cc: Implement wait(). Use gthread types. Remove _GTHREADS_HAS_COND checks in favor of global _GLIBCXX_HAS_GTHREADS. * src/mutex.cc (call_once): Implementation using TLS with mutex fallback. * config/abi/pre/gnu.ver: Add exported symbols. * testsuite/lib/libstdc++.exp (check_v3_target_gthreads): New. * testsuite/lib/dg-options.exp (dg-require-gthreads): Likewise. * testsuite/30_threads/lock_guard/requirements/typedefs.cc: Use dg-require-gthreads and dg-require-cstdint. * testsuite/30_threads/lock_guard/requirements/ explicit_instantiation.cc: Likewise. * testsuite/30_threads/mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/mutex/cons/1.cc: Likewise. * testsuite/30_threads/mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/mutex/lock/1.cc: Likewise. * testsuite/30_threads/mutex/unlock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/recursive_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/recursive_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/recursive_mutex/lock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/unique_lock/requirements/ explicit_instantiation.cc: Likewise. * testsuite/30_threads/unique_lock/requirements/typedefs.cc: Likewise. * testsuite/30_threads/mutex/cons/assign_neg.cc: Also adjust dg-error lines for deleted members. * testsuite/30_threads/mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/call_once/once_flag.cc: New. * testsuite/30_threads/call_once/call_once1.cc: Likewise. * testsuite/30_threads/condition_variable/cons/1.cc: Likewise. * testsuite/30_threads/condition_variable/cons/copy_neg.cc: Likewise * testsuite/30_threads/condition_variable/cons/assign_neg.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/1.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/copy_neg.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/assign_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/timed_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_until/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_until/2.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/1.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/timed_mutex/lock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/2.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/3.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_until/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_until/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/lock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/lock/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/3.cc: Likewise. * testsuite/30_threads/unique_lock/modifiers/1.cc: Likewise. * testsuite/30_threads/unique_lock/modifiers/2.cc: Likewise. * testsuite/30_threads/unique_lock/cons/1.cc: Likewise. * testsuite/30_threads/unique_lock/cons/2.cc: Likewise. * testsuite/30_threads/unique_lock/cons/3.cc: Likewise. * testsuite/30_threads/unique_lock/cons/4.cc: Likewise. * testsuite/30_threads/unique_lock/cons/5.cc: Likewise. * testsuite/30_threads/unique_lock/cons/6.cc: Likewise. * testsuite/30_threads/unique_lock/locking/1.cc: Likewise. * testsuite/30_threads/unique_lock/locking/2.cc: Likewise. * testsuite/30_threads/unique_lock/locking/3.cc: Likewise. * testsuite/30_threads/unique_lock/locking/4.cc: Likewise. From-SVN: r139943
2008-09-03 19:46:09 +02:00
}
template <typename _Rep, typename _Period>
typename enable_if<
condition_variable (condition_variable): Remove _M_internal_mutex. 2009-02-09 Benjamin Kosnik <bkoz@redhat.com> * include/std/condition_variable (condition_variable): Remove _M_internal_mutex. Add private __native_type typedef. * src/condition_variable.cc (condition_variable::notify_one): Remove _M_internal_mutex use. Use typedef. (condition_variable::notify_all): Same. * include/std/mutex (mutex): Add private __native_type typedef. Use it. (recursive_mutex): Same. (timed_mutex): Same. (recursive_timed_mutex): Same. (once_flag): Make __native_type typedef private. * include/std/thread (this_thread): Add minimal markup. * testsuite/30_threads/condition_variable_any/cons/assign_neg.cc: Adjust line numbers. * testsuite/30_threads/condition_variable_any/cons/copy_neg.cc: Same. * testsuite/30_threads/mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/mutex/cons/copy_neg.cc: Same. * testsuite/30_threads/timed_mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/timed_mutex/cons/copy_neg.cc: Same. * testsuite/30_threads/thread/cons/assign_neg.cc: Same. * testsuite/30_threads/thread/cons/copy_neg.cc: Same. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: Same. * testsuite/30_threads/condition_variable/cons/assign_neg.cc: Same. * testsuite/30_threads/condition_variable/cons/copy_neg.cc: Same. * testsuite/30_threads/recursive_timed_mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/recursive_timed_mutex/cons/copy_neg.cc: Same. * testsuite/util/thread/all.h: Testsuite utilities for testing thread. * testsuite/30_threads/condition_variable_any/native_handle/ typesizes.cc: New. * testsuite/30_threads/mutex/native_handle/typesizes.cc: Same. * testsuite/30_threads/timed_mutex/native_handle/typesizes.cc: Same. * testsuite/30_threads/thread/native_handle/typesizes.cc: Same. * testsuite/30_threads/recursive_mutex/native_handle/typesizes.cc: Same. * testsuite/30_threads/condition_variable/native_handle/ typesizes.cc: Same. * testsuite/30_threads/recursive_timed_mutex/native_handle/ typesizes.cc: Same. From-SVN: r144053
2009-02-10 09:29:57 +01:00
!ratio_less_equal<__clock_t::period, _Period>::value, bool>::type
condition_variable: Use new deleted ctors. 2008-09-03 Chris Fairles <chris.fairles@gmail.com> * include/std/condition_variable: Use new deleted ctors. * include/std/mutex: Likewise plus implement timed_mutex, recursive_timed_mutex and call_once. * src/condition_variable.cc: Implement wait(). Use gthread types. Remove _GTHREADS_HAS_COND checks in favor of global _GLIBCXX_HAS_GTHREADS. * src/mutex.cc (call_once): Implementation using TLS with mutex fallback. * config/abi/pre/gnu.ver: Add exported symbols. * testsuite/lib/libstdc++.exp (check_v3_target_gthreads): New. * testsuite/lib/dg-options.exp (dg-require-gthreads): Likewise. * testsuite/30_threads/lock_guard/requirements/typedefs.cc: Use dg-require-gthreads and dg-require-cstdint. * testsuite/30_threads/lock_guard/requirements/ explicit_instantiation.cc: Likewise. * testsuite/30_threads/mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/mutex/cons/1.cc: Likewise. * testsuite/30_threads/mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/mutex/lock/1.cc: Likewise. * testsuite/30_threads/mutex/unlock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/recursive_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/recursive_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/recursive_mutex/lock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/unique_lock/requirements/ explicit_instantiation.cc: Likewise. * testsuite/30_threads/unique_lock/requirements/typedefs.cc: Likewise. * testsuite/30_threads/mutex/cons/assign_neg.cc: Also adjust dg-error lines for deleted members. * testsuite/30_threads/mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/call_once/once_flag.cc: New. * testsuite/30_threads/call_once/call_once1.cc: Likewise. * testsuite/30_threads/condition_variable/cons/1.cc: Likewise. * testsuite/30_threads/condition_variable/cons/copy_neg.cc: Likewise * testsuite/30_threads/condition_variable/cons/assign_neg.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/1.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/copy_neg.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/assign_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/timed_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_until/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_until/2.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/1.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/timed_mutex/lock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/2.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/3.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_until/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_until/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/lock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/lock/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/3.cc: Likewise. * testsuite/30_threads/unique_lock/modifiers/1.cc: Likewise. * testsuite/30_threads/unique_lock/modifiers/2.cc: Likewise. * testsuite/30_threads/unique_lock/cons/1.cc: Likewise. * testsuite/30_threads/unique_lock/cons/2.cc: Likewise. * testsuite/30_threads/unique_lock/cons/3.cc: Likewise. * testsuite/30_threads/unique_lock/cons/4.cc: Likewise. * testsuite/30_threads/unique_lock/cons/5.cc: Likewise. * testsuite/30_threads/unique_lock/cons/6.cc: Likewise. * testsuite/30_threads/unique_lock/locking/1.cc: Likewise. * testsuite/30_threads/unique_lock/locking/2.cc: Likewise. * testsuite/30_threads/unique_lock/locking/3.cc: Likewise. * testsuite/30_threads/unique_lock/locking/4.cc: Likewise. From-SVN: r139943
2008-09-03 19:46:09 +02:00
__try_lock_for_impl(const chrono::duration<_Rep, _Period>& __rtime)
{
condition_variable (condition_variable): Remove _M_internal_mutex. 2009-02-09 Benjamin Kosnik <bkoz@redhat.com> * include/std/condition_variable (condition_variable): Remove _M_internal_mutex. Add private __native_type typedef. * src/condition_variable.cc (condition_variable::notify_one): Remove _M_internal_mutex use. Use typedef. (condition_variable::notify_all): Same. * include/std/mutex (mutex): Add private __native_type typedef. Use it. (recursive_mutex): Same. (timed_mutex): Same. (recursive_timed_mutex): Same. (once_flag): Make __native_type typedef private. * include/std/thread (this_thread): Add minimal markup. * testsuite/30_threads/condition_variable_any/cons/assign_neg.cc: Adjust line numbers. * testsuite/30_threads/condition_variable_any/cons/copy_neg.cc: Same. * testsuite/30_threads/mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/mutex/cons/copy_neg.cc: Same. * testsuite/30_threads/timed_mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/timed_mutex/cons/copy_neg.cc: Same. * testsuite/30_threads/thread/cons/assign_neg.cc: Same. * testsuite/30_threads/thread/cons/copy_neg.cc: Same. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: Same. * testsuite/30_threads/condition_variable/cons/assign_neg.cc: Same. * testsuite/30_threads/condition_variable/cons/copy_neg.cc: Same. * testsuite/30_threads/recursive_timed_mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/recursive_timed_mutex/cons/copy_neg.cc: Same. * testsuite/util/thread/all.h: Testsuite utilities for testing thread. * testsuite/30_threads/condition_variable_any/native_handle/ typesizes.cc: New. * testsuite/30_threads/mutex/native_handle/typesizes.cc: Same. * testsuite/30_threads/timed_mutex/native_handle/typesizes.cc: Same. * testsuite/30_threads/thread/native_handle/typesizes.cc: Same. * testsuite/30_threads/recursive_mutex/native_handle/typesizes.cc: Same. * testsuite/30_threads/condition_variable/native_handle/ typesizes.cc: Same. * testsuite/30_threads/recursive_timed_mutex/native_handle/ typesizes.cc: Same. From-SVN: r144053
2009-02-10 09:29:57 +01:00
__clock_t::time_point __atime = __clock_t::now()
condition_variable: Use new deleted ctors. 2008-09-03 Chris Fairles <chris.fairles@gmail.com> * include/std/condition_variable: Use new deleted ctors. * include/std/mutex: Likewise plus implement timed_mutex, recursive_timed_mutex and call_once. * src/condition_variable.cc: Implement wait(). Use gthread types. Remove _GTHREADS_HAS_COND checks in favor of global _GLIBCXX_HAS_GTHREADS. * src/mutex.cc (call_once): Implementation using TLS with mutex fallback. * config/abi/pre/gnu.ver: Add exported symbols. * testsuite/lib/libstdc++.exp (check_v3_target_gthreads): New. * testsuite/lib/dg-options.exp (dg-require-gthreads): Likewise. * testsuite/30_threads/lock_guard/requirements/typedefs.cc: Use dg-require-gthreads and dg-require-cstdint. * testsuite/30_threads/lock_guard/requirements/ explicit_instantiation.cc: Likewise. * testsuite/30_threads/mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/mutex/cons/1.cc: Likewise. * testsuite/30_threads/mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/mutex/lock/1.cc: Likewise. * testsuite/30_threads/mutex/unlock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/recursive_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/recursive_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/recursive_mutex/lock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/unique_lock/requirements/ explicit_instantiation.cc: Likewise. * testsuite/30_threads/unique_lock/requirements/typedefs.cc: Likewise. * testsuite/30_threads/mutex/cons/assign_neg.cc: Also adjust dg-error lines for deleted members. * testsuite/30_threads/mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/call_once/once_flag.cc: New. * testsuite/30_threads/call_once/call_once1.cc: Likewise. * testsuite/30_threads/condition_variable/cons/1.cc: Likewise. * testsuite/30_threads/condition_variable/cons/copy_neg.cc: Likewise * testsuite/30_threads/condition_variable/cons/assign_neg.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/1.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/copy_neg.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/assign_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/timed_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_until/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_until/2.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/1.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/timed_mutex/lock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/2.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/3.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_until/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_until/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/lock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/lock/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/3.cc: Likewise. * testsuite/30_threads/unique_lock/modifiers/1.cc: Likewise. * testsuite/30_threads/unique_lock/modifiers/2.cc: Likewise. * testsuite/30_threads/unique_lock/cons/1.cc: Likewise. * testsuite/30_threads/unique_lock/cons/2.cc: Likewise. * testsuite/30_threads/unique_lock/cons/3.cc: Likewise. * testsuite/30_threads/unique_lock/cons/4.cc: Likewise. * testsuite/30_threads/unique_lock/cons/5.cc: Likewise. * testsuite/30_threads/unique_lock/cons/6.cc: Likewise. * testsuite/30_threads/unique_lock/locking/1.cc: Likewise. * testsuite/30_threads/unique_lock/locking/2.cc: Likewise. * testsuite/30_threads/unique_lock/locking/3.cc: Likewise. * testsuite/30_threads/unique_lock/locking/4.cc: Likewise. From-SVN: r139943
2008-09-03 19:46:09 +02:00
+ ++chrono::duration_cast<__clock_t::duration>(__rtime);
condition_variable (condition_variable): Remove _M_internal_mutex. 2009-02-09 Benjamin Kosnik <bkoz@redhat.com> * include/std/condition_variable (condition_variable): Remove _M_internal_mutex. Add private __native_type typedef. * src/condition_variable.cc (condition_variable::notify_one): Remove _M_internal_mutex use. Use typedef. (condition_variable::notify_all): Same. * include/std/mutex (mutex): Add private __native_type typedef. Use it. (recursive_mutex): Same. (timed_mutex): Same. (recursive_timed_mutex): Same. (once_flag): Make __native_type typedef private. * include/std/thread (this_thread): Add minimal markup. * testsuite/30_threads/condition_variable_any/cons/assign_neg.cc: Adjust line numbers. * testsuite/30_threads/condition_variable_any/cons/copy_neg.cc: Same. * testsuite/30_threads/mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/mutex/cons/copy_neg.cc: Same. * testsuite/30_threads/timed_mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/timed_mutex/cons/copy_neg.cc: Same. * testsuite/30_threads/thread/cons/assign_neg.cc: Same. * testsuite/30_threads/thread/cons/copy_neg.cc: Same. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: Same. * testsuite/30_threads/condition_variable/cons/assign_neg.cc: Same. * testsuite/30_threads/condition_variable/cons/copy_neg.cc: Same. * testsuite/30_threads/recursive_timed_mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/recursive_timed_mutex/cons/copy_neg.cc: Same. * testsuite/util/thread/all.h: Testsuite utilities for testing thread. * testsuite/30_threads/condition_variable_any/native_handle/ typesizes.cc: New. * testsuite/30_threads/mutex/native_handle/typesizes.cc: Same. * testsuite/30_threads/timed_mutex/native_handle/typesizes.cc: Same. * testsuite/30_threads/thread/native_handle/typesizes.cc: Same. * testsuite/30_threads/recursive_mutex/native_handle/typesizes.cc: Same. * testsuite/30_threads/condition_variable/native_handle/ typesizes.cc: Same. * testsuite/30_threads/recursive_timed_mutex/native_handle/ typesizes.cc: Same. From-SVN: r144053
2009-02-10 09:29:57 +01:00
return try_lock_until(__atime);
condition_variable: Use new deleted ctors. 2008-09-03 Chris Fairles <chris.fairles@gmail.com> * include/std/condition_variable: Use new deleted ctors. * include/std/mutex: Likewise plus implement timed_mutex, recursive_timed_mutex and call_once. * src/condition_variable.cc: Implement wait(). Use gthread types. Remove _GTHREADS_HAS_COND checks in favor of global _GLIBCXX_HAS_GTHREADS. * src/mutex.cc (call_once): Implementation using TLS with mutex fallback. * config/abi/pre/gnu.ver: Add exported symbols. * testsuite/lib/libstdc++.exp (check_v3_target_gthreads): New. * testsuite/lib/dg-options.exp (dg-require-gthreads): Likewise. * testsuite/30_threads/lock_guard/requirements/typedefs.cc: Use dg-require-gthreads and dg-require-cstdint. * testsuite/30_threads/lock_guard/requirements/ explicit_instantiation.cc: Likewise. * testsuite/30_threads/mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/mutex/cons/1.cc: Likewise. * testsuite/30_threads/mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/mutex/lock/1.cc: Likewise. * testsuite/30_threads/mutex/unlock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/recursive_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/recursive_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/recursive_mutex/lock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/unique_lock/requirements/ explicit_instantiation.cc: Likewise. * testsuite/30_threads/unique_lock/requirements/typedefs.cc: Likewise. * testsuite/30_threads/mutex/cons/assign_neg.cc: Also adjust dg-error lines for deleted members. * testsuite/30_threads/mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/call_once/once_flag.cc: New. * testsuite/30_threads/call_once/call_once1.cc: Likewise. * testsuite/30_threads/condition_variable/cons/1.cc: Likewise. * testsuite/30_threads/condition_variable/cons/copy_neg.cc: Likewise * testsuite/30_threads/condition_variable/cons/assign_neg.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/1.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/copy_neg.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/assign_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/timed_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_until/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_until/2.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/1.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/timed_mutex/lock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/2.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/3.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_until/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_until/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/lock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/lock/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/3.cc: Likewise. * testsuite/30_threads/unique_lock/modifiers/1.cc: Likewise. * testsuite/30_threads/unique_lock/modifiers/2.cc: Likewise. * testsuite/30_threads/unique_lock/cons/1.cc: Likewise. * testsuite/30_threads/unique_lock/cons/2.cc: Likewise. * testsuite/30_threads/unique_lock/cons/3.cc: Likewise. * testsuite/30_threads/unique_lock/cons/4.cc: Likewise. * testsuite/30_threads/unique_lock/cons/5.cc: Likewise. * testsuite/30_threads/unique_lock/cons/6.cc: Likewise. * testsuite/30_threads/unique_lock/locking/1.cc: Likewise. * testsuite/30_threads/unique_lock/locking/2.cc: Likewise. * testsuite/30_threads/unique_lock/locking/3.cc: Likewise. * testsuite/30_threads/unique_lock/locking/4.cc: Likewise. From-SVN: r139943
2008-09-03 19:46:09 +02:00
}
};
/// recursive_timed_mutex
class recursive_timed_mutex : private __recursive_mutex_base
{
condition_variable (condition_variable): Remove _M_internal_mutex. 2009-02-09 Benjamin Kosnik <bkoz@redhat.com> * include/std/condition_variable (condition_variable): Remove _M_internal_mutex. Add private __native_type typedef. * src/condition_variable.cc (condition_variable::notify_one): Remove _M_internal_mutex use. Use typedef. (condition_variable::notify_all): Same. * include/std/mutex (mutex): Add private __native_type typedef. Use it. (recursive_mutex): Same. (timed_mutex): Same. (recursive_timed_mutex): Same. (once_flag): Make __native_type typedef private. * include/std/thread (this_thread): Add minimal markup. * testsuite/30_threads/condition_variable_any/cons/assign_neg.cc: Adjust line numbers. * testsuite/30_threads/condition_variable_any/cons/copy_neg.cc: Same. * testsuite/30_threads/mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/mutex/cons/copy_neg.cc: Same. * testsuite/30_threads/timed_mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/timed_mutex/cons/copy_neg.cc: Same. * testsuite/30_threads/thread/cons/assign_neg.cc: Same. * testsuite/30_threads/thread/cons/copy_neg.cc: Same. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: Same. * testsuite/30_threads/condition_variable/cons/assign_neg.cc: Same. * testsuite/30_threads/condition_variable/cons/copy_neg.cc: Same. * testsuite/30_threads/recursive_timed_mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/recursive_timed_mutex/cons/copy_neg.cc: Same. * testsuite/util/thread/all.h: Testsuite utilities for testing thread. * testsuite/30_threads/condition_variable_any/native_handle/ typesizes.cc: New. * testsuite/30_threads/mutex/native_handle/typesizes.cc: Same. * testsuite/30_threads/timed_mutex/native_handle/typesizes.cc: Same. * testsuite/30_threads/thread/native_handle/typesizes.cc: Same. * testsuite/30_threads/recursive_mutex/native_handle/typesizes.cc: Same. * testsuite/30_threads/condition_variable/native_handle/ typesizes.cc: Same. * testsuite/30_threads/recursive_timed_mutex/native_handle/ typesizes.cc: Same. From-SVN: r144053
2009-02-10 09:29:57 +01:00
#ifdef _GLIBCXX_USE_CLOCK_MONOTONIC
typedef chrono::steady_clock __clock_t;
condition_variable (condition_variable): Remove _M_internal_mutex. 2009-02-09 Benjamin Kosnik <bkoz@redhat.com> * include/std/condition_variable (condition_variable): Remove _M_internal_mutex. Add private __native_type typedef. * src/condition_variable.cc (condition_variable::notify_one): Remove _M_internal_mutex use. Use typedef. (condition_variable::notify_all): Same. * include/std/mutex (mutex): Add private __native_type typedef. Use it. (recursive_mutex): Same. (timed_mutex): Same. (recursive_timed_mutex): Same. (once_flag): Make __native_type typedef private. * include/std/thread (this_thread): Add minimal markup. * testsuite/30_threads/condition_variable_any/cons/assign_neg.cc: Adjust line numbers. * testsuite/30_threads/condition_variable_any/cons/copy_neg.cc: Same. * testsuite/30_threads/mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/mutex/cons/copy_neg.cc: Same. * testsuite/30_threads/timed_mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/timed_mutex/cons/copy_neg.cc: Same. * testsuite/30_threads/thread/cons/assign_neg.cc: Same. * testsuite/30_threads/thread/cons/copy_neg.cc: Same. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: Same. * testsuite/30_threads/condition_variable/cons/assign_neg.cc: Same. * testsuite/30_threads/condition_variable/cons/copy_neg.cc: Same. * testsuite/30_threads/recursive_timed_mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/recursive_timed_mutex/cons/copy_neg.cc: Same. * testsuite/util/thread/all.h: Testsuite utilities for testing thread. * testsuite/30_threads/condition_variable_any/native_handle/ typesizes.cc: New. * testsuite/30_threads/mutex/native_handle/typesizes.cc: Same. * testsuite/30_threads/timed_mutex/native_handle/typesizes.cc: Same. * testsuite/30_threads/thread/native_handle/typesizes.cc: Same. * testsuite/30_threads/recursive_mutex/native_handle/typesizes.cc: Same. * testsuite/30_threads/condition_variable/native_handle/ typesizes.cc: Same. * testsuite/30_threads/recursive_timed_mutex/native_handle/ typesizes.cc: Same. From-SVN: r144053
2009-02-10 09:29:57 +01:00
#else
typedef chrono::high_resolution_clock __clock_t;
#endif
public:
condition_variable (condition_variable): Remove _M_internal_mutex. 2009-02-09 Benjamin Kosnik <bkoz@redhat.com> * include/std/condition_variable (condition_variable): Remove _M_internal_mutex. Add private __native_type typedef. * src/condition_variable.cc (condition_variable::notify_one): Remove _M_internal_mutex use. Use typedef. (condition_variable::notify_all): Same. * include/std/mutex (mutex): Add private __native_type typedef. Use it. (recursive_mutex): Same. (timed_mutex): Same. (recursive_timed_mutex): Same. (once_flag): Make __native_type typedef private. * include/std/thread (this_thread): Add minimal markup. * testsuite/30_threads/condition_variable_any/cons/assign_neg.cc: Adjust line numbers. * testsuite/30_threads/condition_variable_any/cons/copy_neg.cc: Same. * testsuite/30_threads/mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/mutex/cons/copy_neg.cc: Same. * testsuite/30_threads/timed_mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/timed_mutex/cons/copy_neg.cc: Same. * testsuite/30_threads/thread/cons/assign_neg.cc: Same. * testsuite/30_threads/thread/cons/copy_neg.cc: Same. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: Same. * testsuite/30_threads/condition_variable/cons/assign_neg.cc: Same. * testsuite/30_threads/condition_variable/cons/copy_neg.cc: Same. * testsuite/30_threads/recursive_timed_mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/recursive_timed_mutex/cons/copy_neg.cc: Same. * testsuite/util/thread/all.h: Testsuite utilities for testing thread. * testsuite/30_threads/condition_variable_any/native_handle/ typesizes.cc: New. * testsuite/30_threads/mutex/native_handle/typesizes.cc: Same. * testsuite/30_threads/timed_mutex/native_handle/typesizes.cc: Same. * testsuite/30_threads/thread/native_handle/typesizes.cc: Same. * testsuite/30_threads/recursive_mutex/native_handle/typesizes.cc: Same. * testsuite/30_threads/condition_variable/native_handle/ typesizes.cc: Same. * testsuite/30_threads/recursive_timed_mutex/native_handle/ typesizes.cc: Same. From-SVN: r144053
2009-02-10 09:29:57 +01:00
typedef __native_type* native_handle_type;
condition_variable: Use new deleted ctors. 2008-09-03 Chris Fairles <chris.fairles@gmail.com> * include/std/condition_variable: Use new deleted ctors. * include/std/mutex: Likewise plus implement timed_mutex, recursive_timed_mutex and call_once. * src/condition_variable.cc: Implement wait(). Use gthread types. Remove _GTHREADS_HAS_COND checks in favor of global _GLIBCXX_HAS_GTHREADS. * src/mutex.cc (call_once): Implementation using TLS with mutex fallback. * config/abi/pre/gnu.ver: Add exported symbols. * testsuite/lib/libstdc++.exp (check_v3_target_gthreads): New. * testsuite/lib/dg-options.exp (dg-require-gthreads): Likewise. * testsuite/30_threads/lock_guard/requirements/typedefs.cc: Use dg-require-gthreads and dg-require-cstdint. * testsuite/30_threads/lock_guard/requirements/ explicit_instantiation.cc: Likewise. * testsuite/30_threads/mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/mutex/cons/1.cc: Likewise. * testsuite/30_threads/mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/mutex/lock/1.cc: Likewise. * testsuite/30_threads/mutex/unlock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/recursive_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/recursive_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/recursive_mutex/lock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/unique_lock/requirements/ explicit_instantiation.cc: Likewise. * testsuite/30_threads/unique_lock/requirements/typedefs.cc: Likewise. * testsuite/30_threads/mutex/cons/assign_neg.cc: Also adjust dg-error lines for deleted members. * testsuite/30_threads/mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/call_once/once_flag.cc: New. * testsuite/30_threads/call_once/call_once1.cc: Likewise. * testsuite/30_threads/condition_variable/cons/1.cc: Likewise. * testsuite/30_threads/condition_variable/cons/copy_neg.cc: Likewise * testsuite/30_threads/condition_variable/cons/assign_neg.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/1.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/copy_neg.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/assign_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/timed_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_until/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_until/2.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/1.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/timed_mutex/lock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/2.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/3.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_until/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_until/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/lock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/lock/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/3.cc: Likewise. * testsuite/30_threads/unique_lock/modifiers/1.cc: Likewise. * testsuite/30_threads/unique_lock/modifiers/2.cc: Likewise. * testsuite/30_threads/unique_lock/cons/1.cc: Likewise. * testsuite/30_threads/unique_lock/cons/2.cc: Likewise. * testsuite/30_threads/unique_lock/cons/3.cc: Likewise. * testsuite/30_threads/unique_lock/cons/4.cc: Likewise. * testsuite/30_threads/unique_lock/cons/5.cc: Likewise. * testsuite/30_threads/unique_lock/cons/6.cc: Likewise. * testsuite/30_threads/unique_lock/locking/1.cc: Likewise. * testsuite/30_threads/unique_lock/locking/2.cc: Likewise. * testsuite/30_threads/unique_lock/locking/3.cc: Likewise. * testsuite/30_threads/unique_lock/locking/4.cc: Likewise. From-SVN: r139943
2008-09-03 19:46:09 +02:00
recursive_timed_mutex() = default;
~recursive_timed_mutex() = default;
condition_variable: Use new deleted ctors. 2008-09-03 Chris Fairles <chris.fairles@gmail.com> * include/std/condition_variable: Use new deleted ctors. * include/std/mutex: Likewise plus implement timed_mutex, recursive_timed_mutex and call_once. * src/condition_variable.cc: Implement wait(). Use gthread types. Remove _GTHREADS_HAS_COND checks in favor of global _GLIBCXX_HAS_GTHREADS. * src/mutex.cc (call_once): Implementation using TLS with mutex fallback. * config/abi/pre/gnu.ver: Add exported symbols. * testsuite/lib/libstdc++.exp (check_v3_target_gthreads): New. * testsuite/lib/dg-options.exp (dg-require-gthreads): Likewise. * testsuite/30_threads/lock_guard/requirements/typedefs.cc: Use dg-require-gthreads and dg-require-cstdint. * testsuite/30_threads/lock_guard/requirements/ explicit_instantiation.cc: Likewise. * testsuite/30_threads/mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/mutex/cons/1.cc: Likewise. * testsuite/30_threads/mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/mutex/lock/1.cc: Likewise. * testsuite/30_threads/mutex/unlock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/recursive_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/recursive_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/recursive_mutex/lock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/unique_lock/requirements/ explicit_instantiation.cc: Likewise. * testsuite/30_threads/unique_lock/requirements/typedefs.cc: Likewise. * testsuite/30_threads/mutex/cons/assign_neg.cc: Also adjust dg-error lines for deleted members. * testsuite/30_threads/mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/call_once/once_flag.cc: New. * testsuite/30_threads/call_once/call_once1.cc: Likewise. * testsuite/30_threads/condition_variable/cons/1.cc: Likewise. * testsuite/30_threads/condition_variable/cons/copy_neg.cc: Likewise * testsuite/30_threads/condition_variable/cons/assign_neg.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/1.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/copy_neg.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/assign_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/timed_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_until/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_until/2.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/1.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/timed_mutex/lock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/2.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/3.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_until/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_until/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/lock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/lock/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/3.cc: Likewise. * testsuite/30_threads/unique_lock/modifiers/1.cc: Likewise. * testsuite/30_threads/unique_lock/modifiers/2.cc: Likewise. * testsuite/30_threads/unique_lock/cons/1.cc: Likewise. * testsuite/30_threads/unique_lock/cons/2.cc: Likewise. * testsuite/30_threads/unique_lock/cons/3.cc: Likewise. * testsuite/30_threads/unique_lock/cons/4.cc: Likewise. * testsuite/30_threads/unique_lock/cons/5.cc: Likewise. * testsuite/30_threads/unique_lock/cons/6.cc: Likewise. * testsuite/30_threads/unique_lock/locking/1.cc: Likewise. * testsuite/30_threads/unique_lock/locking/2.cc: Likewise. * testsuite/30_threads/unique_lock/locking/3.cc: Likewise. * testsuite/30_threads/unique_lock/locking/4.cc: Likewise. From-SVN: r139943
2008-09-03 19:46:09 +02:00
recursive_timed_mutex(const recursive_timed_mutex&) = delete;
recursive_timed_mutex& operator=(const recursive_timed_mutex&) = delete;
void
lock()
{
int __e = __gthread_recursive_mutex_lock(&_M_mutex);
// EINVAL, EAGAIN, EBUSY, EINVAL, EDEADLK(may)
if (__e)
__throw_system_error(__e);
}
condition_variable: Use new deleted ctors. 2008-09-03 Chris Fairles <chris.fairles@gmail.com> * include/std/condition_variable: Use new deleted ctors. * include/std/mutex: Likewise plus implement timed_mutex, recursive_timed_mutex and call_once. * src/condition_variable.cc: Implement wait(). Use gthread types. Remove _GTHREADS_HAS_COND checks in favor of global _GLIBCXX_HAS_GTHREADS. * src/mutex.cc (call_once): Implementation using TLS with mutex fallback. * config/abi/pre/gnu.ver: Add exported symbols. * testsuite/lib/libstdc++.exp (check_v3_target_gthreads): New. * testsuite/lib/dg-options.exp (dg-require-gthreads): Likewise. * testsuite/30_threads/lock_guard/requirements/typedefs.cc: Use dg-require-gthreads and dg-require-cstdint. * testsuite/30_threads/lock_guard/requirements/ explicit_instantiation.cc: Likewise. * testsuite/30_threads/mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/mutex/cons/1.cc: Likewise. * testsuite/30_threads/mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/mutex/lock/1.cc: Likewise. * testsuite/30_threads/mutex/unlock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/recursive_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/recursive_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/recursive_mutex/lock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/unique_lock/requirements/ explicit_instantiation.cc: Likewise. * testsuite/30_threads/unique_lock/requirements/typedefs.cc: Likewise. * testsuite/30_threads/mutex/cons/assign_neg.cc: Also adjust dg-error lines for deleted members. * testsuite/30_threads/mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/call_once/once_flag.cc: New. * testsuite/30_threads/call_once/call_once1.cc: Likewise. * testsuite/30_threads/condition_variable/cons/1.cc: Likewise. * testsuite/30_threads/condition_variable/cons/copy_neg.cc: Likewise * testsuite/30_threads/condition_variable/cons/assign_neg.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/1.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/copy_neg.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/assign_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/timed_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_until/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_until/2.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/1.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/timed_mutex/lock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/2.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/3.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_until/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_until/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/lock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/lock/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/3.cc: Likewise. * testsuite/30_threads/unique_lock/modifiers/1.cc: Likewise. * testsuite/30_threads/unique_lock/modifiers/2.cc: Likewise. * testsuite/30_threads/unique_lock/cons/1.cc: Likewise. * testsuite/30_threads/unique_lock/cons/2.cc: Likewise. * testsuite/30_threads/unique_lock/cons/3.cc: Likewise. * testsuite/30_threads/unique_lock/cons/4.cc: Likewise. * testsuite/30_threads/unique_lock/cons/5.cc: Likewise. * testsuite/30_threads/unique_lock/cons/6.cc: Likewise. * testsuite/30_threads/unique_lock/locking/1.cc: Likewise. * testsuite/30_threads/unique_lock/locking/2.cc: Likewise. * testsuite/30_threads/unique_lock/locking/3.cc: Likewise. * testsuite/30_threads/unique_lock/locking/4.cc: Likewise. From-SVN: r139943
2008-09-03 19:46:09 +02:00
bool
try_lock() noexcept
condition_variable: Use new deleted ctors. 2008-09-03 Chris Fairles <chris.fairles@gmail.com> * include/std/condition_variable: Use new deleted ctors. * include/std/mutex: Likewise plus implement timed_mutex, recursive_timed_mutex and call_once. * src/condition_variable.cc: Implement wait(). Use gthread types. Remove _GTHREADS_HAS_COND checks in favor of global _GLIBCXX_HAS_GTHREADS. * src/mutex.cc (call_once): Implementation using TLS with mutex fallback. * config/abi/pre/gnu.ver: Add exported symbols. * testsuite/lib/libstdc++.exp (check_v3_target_gthreads): New. * testsuite/lib/dg-options.exp (dg-require-gthreads): Likewise. * testsuite/30_threads/lock_guard/requirements/typedefs.cc: Use dg-require-gthreads and dg-require-cstdint. * testsuite/30_threads/lock_guard/requirements/ explicit_instantiation.cc: Likewise. * testsuite/30_threads/mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/mutex/cons/1.cc: Likewise. * testsuite/30_threads/mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/mutex/lock/1.cc: Likewise. * testsuite/30_threads/mutex/unlock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/recursive_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/recursive_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/recursive_mutex/lock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/unique_lock/requirements/ explicit_instantiation.cc: Likewise. * testsuite/30_threads/unique_lock/requirements/typedefs.cc: Likewise. * testsuite/30_threads/mutex/cons/assign_neg.cc: Also adjust dg-error lines for deleted members. * testsuite/30_threads/mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/call_once/once_flag.cc: New. * testsuite/30_threads/call_once/call_once1.cc: Likewise. * testsuite/30_threads/condition_variable/cons/1.cc: Likewise. * testsuite/30_threads/condition_variable/cons/copy_neg.cc: Likewise * testsuite/30_threads/condition_variable/cons/assign_neg.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/1.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/copy_neg.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/assign_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/timed_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_until/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_until/2.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/1.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/timed_mutex/lock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/2.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/3.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_until/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_until/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/lock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/lock/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/3.cc: Likewise. * testsuite/30_threads/unique_lock/modifiers/1.cc: Likewise. * testsuite/30_threads/unique_lock/modifiers/2.cc: Likewise. * testsuite/30_threads/unique_lock/cons/1.cc: Likewise. * testsuite/30_threads/unique_lock/cons/2.cc: Likewise. * testsuite/30_threads/unique_lock/cons/3.cc: Likewise. * testsuite/30_threads/unique_lock/cons/4.cc: Likewise. * testsuite/30_threads/unique_lock/cons/5.cc: Likewise. * testsuite/30_threads/unique_lock/cons/6.cc: Likewise. * testsuite/30_threads/unique_lock/locking/1.cc: Likewise. * testsuite/30_threads/unique_lock/locking/2.cc: Likewise. * testsuite/30_threads/unique_lock/locking/3.cc: Likewise. * testsuite/30_threads/unique_lock/locking/4.cc: Likewise. From-SVN: r139943
2008-09-03 19:46:09 +02:00
{
// XXX EINVAL, EAGAIN, EBUSY
return !__gthread_recursive_mutex_trylock(&_M_mutex);
}
template <class _Rep, class _Period>
bool
condition_variable: Use new deleted ctors. 2008-09-03 Chris Fairles <chris.fairles@gmail.com> * include/std/condition_variable: Use new deleted ctors. * include/std/mutex: Likewise plus implement timed_mutex, recursive_timed_mutex and call_once. * src/condition_variable.cc: Implement wait(). Use gthread types. Remove _GTHREADS_HAS_COND checks in favor of global _GLIBCXX_HAS_GTHREADS. * src/mutex.cc (call_once): Implementation using TLS with mutex fallback. * config/abi/pre/gnu.ver: Add exported symbols. * testsuite/lib/libstdc++.exp (check_v3_target_gthreads): New. * testsuite/lib/dg-options.exp (dg-require-gthreads): Likewise. * testsuite/30_threads/lock_guard/requirements/typedefs.cc: Use dg-require-gthreads and dg-require-cstdint. * testsuite/30_threads/lock_guard/requirements/ explicit_instantiation.cc: Likewise. * testsuite/30_threads/mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/mutex/cons/1.cc: Likewise. * testsuite/30_threads/mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/mutex/lock/1.cc: Likewise. * testsuite/30_threads/mutex/unlock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/recursive_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/recursive_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/recursive_mutex/lock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/unique_lock/requirements/ explicit_instantiation.cc: Likewise. * testsuite/30_threads/unique_lock/requirements/typedefs.cc: Likewise. * testsuite/30_threads/mutex/cons/assign_neg.cc: Also adjust dg-error lines for deleted members. * testsuite/30_threads/mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/call_once/once_flag.cc: New. * testsuite/30_threads/call_once/call_once1.cc: Likewise. * testsuite/30_threads/condition_variable/cons/1.cc: Likewise. * testsuite/30_threads/condition_variable/cons/copy_neg.cc: Likewise * testsuite/30_threads/condition_variable/cons/assign_neg.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/1.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/copy_neg.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/assign_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/timed_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_until/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_until/2.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/1.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/timed_mutex/lock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/2.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/3.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_until/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_until/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/lock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/lock/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/3.cc: Likewise. * testsuite/30_threads/unique_lock/modifiers/1.cc: Likewise. * testsuite/30_threads/unique_lock/modifiers/2.cc: Likewise. * testsuite/30_threads/unique_lock/cons/1.cc: Likewise. * testsuite/30_threads/unique_lock/cons/2.cc: Likewise. * testsuite/30_threads/unique_lock/cons/3.cc: Likewise. * testsuite/30_threads/unique_lock/cons/4.cc: Likewise. * testsuite/30_threads/unique_lock/cons/5.cc: Likewise. * testsuite/30_threads/unique_lock/cons/6.cc: Likewise. * testsuite/30_threads/unique_lock/locking/1.cc: Likewise. * testsuite/30_threads/unique_lock/locking/2.cc: Likewise. * testsuite/30_threads/unique_lock/locking/3.cc: Likewise. * testsuite/30_threads/unique_lock/locking/4.cc: Likewise. From-SVN: r139943
2008-09-03 19:46:09 +02:00
try_lock_for(const chrono::duration<_Rep, _Period>& __rtime)
{ return __try_lock_for_impl(__rtime); }
template <class _Clock, class _Duration>
bool
condition_variable: Use new deleted ctors. 2008-09-03 Chris Fairles <chris.fairles@gmail.com> * include/std/condition_variable: Use new deleted ctors. * include/std/mutex: Likewise plus implement timed_mutex, recursive_timed_mutex and call_once. * src/condition_variable.cc: Implement wait(). Use gthread types. Remove _GTHREADS_HAS_COND checks in favor of global _GLIBCXX_HAS_GTHREADS. * src/mutex.cc (call_once): Implementation using TLS with mutex fallback. * config/abi/pre/gnu.ver: Add exported symbols. * testsuite/lib/libstdc++.exp (check_v3_target_gthreads): New. * testsuite/lib/dg-options.exp (dg-require-gthreads): Likewise. * testsuite/30_threads/lock_guard/requirements/typedefs.cc: Use dg-require-gthreads and dg-require-cstdint. * testsuite/30_threads/lock_guard/requirements/ explicit_instantiation.cc: Likewise. * testsuite/30_threads/mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/mutex/cons/1.cc: Likewise. * testsuite/30_threads/mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/mutex/lock/1.cc: Likewise. * testsuite/30_threads/mutex/unlock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/recursive_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/recursive_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/recursive_mutex/lock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/unique_lock/requirements/ explicit_instantiation.cc: Likewise. * testsuite/30_threads/unique_lock/requirements/typedefs.cc: Likewise. * testsuite/30_threads/mutex/cons/assign_neg.cc: Also adjust dg-error lines for deleted members. * testsuite/30_threads/mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/call_once/once_flag.cc: New. * testsuite/30_threads/call_once/call_once1.cc: Likewise. * testsuite/30_threads/condition_variable/cons/1.cc: Likewise. * testsuite/30_threads/condition_variable/cons/copy_neg.cc: Likewise * testsuite/30_threads/condition_variable/cons/assign_neg.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/1.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/copy_neg.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/assign_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/timed_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_until/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_until/2.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/1.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/timed_mutex/lock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/2.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/3.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_until/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_until/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/lock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/lock/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/3.cc: Likewise. * testsuite/30_threads/unique_lock/modifiers/1.cc: Likewise. * testsuite/30_threads/unique_lock/modifiers/2.cc: Likewise. * testsuite/30_threads/unique_lock/cons/1.cc: Likewise. * testsuite/30_threads/unique_lock/cons/2.cc: Likewise. * testsuite/30_threads/unique_lock/cons/3.cc: Likewise. * testsuite/30_threads/unique_lock/cons/4.cc: Likewise. * testsuite/30_threads/unique_lock/cons/5.cc: Likewise. * testsuite/30_threads/unique_lock/cons/6.cc: Likewise. * testsuite/30_threads/unique_lock/locking/1.cc: Likewise. * testsuite/30_threads/unique_lock/locking/2.cc: Likewise. * testsuite/30_threads/unique_lock/locking/3.cc: Likewise. * testsuite/30_threads/unique_lock/locking/4.cc: Likewise. From-SVN: r139943
2008-09-03 19:46:09 +02:00
try_lock_until(const chrono::time_point<_Clock, _Duration>& __atime)
condition_variable (condition_variable): Remove _M_internal_mutex. 2009-02-09 Benjamin Kosnik <bkoz@redhat.com> * include/std/condition_variable (condition_variable): Remove _M_internal_mutex. Add private __native_type typedef. * src/condition_variable.cc (condition_variable::notify_one): Remove _M_internal_mutex use. Use typedef. (condition_variable::notify_all): Same. * include/std/mutex (mutex): Add private __native_type typedef. Use it. (recursive_mutex): Same. (timed_mutex): Same. (recursive_timed_mutex): Same. (once_flag): Make __native_type typedef private. * include/std/thread (this_thread): Add minimal markup. * testsuite/30_threads/condition_variable_any/cons/assign_neg.cc: Adjust line numbers. * testsuite/30_threads/condition_variable_any/cons/copy_neg.cc: Same. * testsuite/30_threads/mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/mutex/cons/copy_neg.cc: Same. * testsuite/30_threads/timed_mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/timed_mutex/cons/copy_neg.cc: Same. * testsuite/30_threads/thread/cons/assign_neg.cc: Same. * testsuite/30_threads/thread/cons/copy_neg.cc: Same. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: Same. * testsuite/30_threads/condition_variable/cons/assign_neg.cc: Same. * testsuite/30_threads/condition_variable/cons/copy_neg.cc: Same. * testsuite/30_threads/recursive_timed_mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/recursive_timed_mutex/cons/copy_neg.cc: Same. * testsuite/util/thread/all.h: Testsuite utilities for testing thread. * testsuite/30_threads/condition_variable_any/native_handle/ typesizes.cc: New. * testsuite/30_threads/mutex/native_handle/typesizes.cc: Same. * testsuite/30_threads/timed_mutex/native_handle/typesizes.cc: Same. * testsuite/30_threads/thread/native_handle/typesizes.cc: Same. * testsuite/30_threads/recursive_mutex/native_handle/typesizes.cc: Same. * testsuite/30_threads/condition_variable/native_handle/ typesizes.cc: Same. * testsuite/30_threads/recursive_timed_mutex/native_handle/ typesizes.cc: Same. From-SVN: r144053
2009-02-10 09:29:57 +01:00
{
condition_variable: Use new deleted ctors. 2008-09-03 Chris Fairles <chris.fairles@gmail.com> * include/std/condition_variable: Use new deleted ctors. * include/std/mutex: Likewise plus implement timed_mutex, recursive_timed_mutex and call_once. * src/condition_variable.cc: Implement wait(). Use gthread types. Remove _GTHREADS_HAS_COND checks in favor of global _GLIBCXX_HAS_GTHREADS. * src/mutex.cc (call_once): Implementation using TLS with mutex fallback. * config/abi/pre/gnu.ver: Add exported symbols. * testsuite/lib/libstdc++.exp (check_v3_target_gthreads): New. * testsuite/lib/dg-options.exp (dg-require-gthreads): Likewise. * testsuite/30_threads/lock_guard/requirements/typedefs.cc: Use dg-require-gthreads and dg-require-cstdint. * testsuite/30_threads/lock_guard/requirements/ explicit_instantiation.cc: Likewise. * testsuite/30_threads/mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/mutex/cons/1.cc: Likewise. * testsuite/30_threads/mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/mutex/lock/1.cc: Likewise. * testsuite/30_threads/mutex/unlock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/recursive_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/recursive_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/recursive_mutex/lock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/unique_lock/requirements/ explicit_instantiation.cc: Likewise. * testsuite/30_threads/unique_lock/requirements/typedefs.cc: Likewise. * testsuite/30_threads/mutex/cons/assign_neg.cc: Also adjust dg-error lines for deleted members. * testsuite/30_threads/mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/call_once/once_flag.cc: New. * testsuite/30_threads/call_once/call_once1.cc: Likewise. * testsuite/30_threads/condition_variable/cons/1.cc: Likewise. * testsuite/30_threads/condition_variable/cons/copy_neg.cc: Likewise * testsuite/30_threads/condition_variable/cons/assign_neg.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/1.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/copy_neg.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/assign_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/timed_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_until/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_until/2.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/1.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/timed_mutex/lock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/2.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/3.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_until/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_until/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/lock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/lock/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/3.cc: Likewise. * testsuite/30_threads/unique_lock/modifiers/1.cc: Likewise. * testsuite/30_threads/unique_lock/modifiers/2.cc: Likewise. * testsuite/30_threads/unique_lock/cons/1.cc: Likewise. * testsuite/30_threads/unique_lock/cons/2.cc: Likewise. * testsuite/30_threads/unique_lock/cons/3.cc: Likewise. * testsuite/30_threads/unique_lock/cons/4.cc: Likewise. * testsuite/30_threads/unique_lock/cons/5.cc: Likewise. * testsuite/30_threads/unique_lock/cons/6.cc: Likewise. * testsuite/30_threads/unique_lock/locking/1.cc: Likewise. * testsuite/30_threads/unique_lock/locking/2.cc: Likewise. * testsuite/30_threads/unique_lock/locking/3.cc: Likewise. * testsuite/30_threads/unique_lock/locking/4.cc: Likewise. From-SVN: r139943
2008-09-03 19:46:09 +02:00
chrono::time_point<_Clock, chrono::seconds> __s =
condition_variable (condition_variable): Remove _M_internal_mutex. 2009-02-09 Benjamin Kosnik <bkoz@redhat.com> * include/std/condition_variable (condition_variable): Remove _M_internal_mutex. Add private __native_type typedef. * src/condition_variable.cc (condition_variable::notify_one): Remove _M_internal_mutex use. Use typedef. (condition_variable::notify_all): Same. * include/std/mutex (mutex): Add private __native_type typedef. Use it. (recursive_mutex): Same. (timed_mutex): Same. (recursive_timed_mutex): Same. (once_flag): Make __native_type typedef private. * include/std/thread (this_thread): Add minimal markup. * testsuite/30_threads/condition_variable_any/cons/assign_neg.cc: Adjust line numbers. * testsuite/30_threads/condition_variable_any/cons/copy_neg.cc: Same. * testsuite/30_threads/mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/mutex/cons/copy_neg.cc: Same. * testsuite/30_threads/timed_mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/timed_mutex/cons/copy_neg.cc: Same. * testsuite/30_threads/thread/cons/assign_neg.cc: Same. * testsuite/30_threads/thread/cons/copy_neg.cc: Same. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: Same. * testsuite/30_threads/condition_variable/cons/assign_neg.cc: Same. * testsuite/30_threads/condition_variable/cons/copy_neg.cc: Same. * testsuite/30_threads/recursive_timed_mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/recursive_timed_mutex/cons/copy_neg.cc: Same. * testsuite/util/thread/all.h: Testsuite utilities for testing thread. * testsuite/30_threads/condition_variable_any/native_handle/ typesizes.cc: New. * testsuite/30_threads/mutex/native_handle/typesizes.cc: Same. * testsuite/30_threads/timed_mutex/native_handle/typesizes.cc: Same. * testsuite/30_threads/thread/native_handle/typesizes.cc: Same. * testsuite/30_threads/recursive_mutex/native_handle/typesizes.cc: Same. * testsuite/30_threads/condition_variable/native_handle/ typesizes.cc: Same. * testsuite/30_threads/recursive_timed_mutex/native_handle/ typesizes.cc: Same. From-SVN: r144053
2009-02-10 09:29:57 +01:00
chrono::time_point_cast<chrono::seconds>(__atime);
condition_variable: Use new deleted ctors. 2008-09-03 Chris Fairles <chris.fairles@gmail.com> * include/std/condition_variable: Use new deleted ctors. * include/std/mutex: Likewise plus implement timed_mutex, recursive_timed_mutex and call_once. * src/condition_variable.cc: Implement wait(). Use gthread types. Remove _GTHREADS_HAS_COND checks in favor of global _GLIBCXX_HAS_GTHREADS. * src/mutex.cc (call_once): Implementation using TLS with mutex fallback. * config/abi/pre/gnu.ver: Add exported symbols. * testsuite/lib/libstdc++.exp (check_v3_target_gthreads): New. * testsuite/lib/dg-options.exp (dg-require-gthreads): Likewise. * testsuite/30_threads/lock_guard/requirements/typedefs.cc: Use dg-require-gthreads and dg-require-cstdint. * testsuite/30_threads/lock_guard/requirements/ explicit_instantiation.cc: Likewise. * testsuite/30_threads/mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/mutex/cons/1.cc: Likewise. * testsuite/30_threads/mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/mutex/lock/1.cc: Likewise. * testsuite/30_threads/mutex/unlock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/recursive_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/recursive_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/recursive_mutex/lock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/unique_lock/requirements/ explicit_instantiation.cc: Likewise. * testsuite/30_threads/unique_lock/requirements/typedefs.cc: Likewise. * testsuite/30_threads/mutex/cons/assign_neg.cc: Also adjust dg-error lines for deleted members. * testsuite/30_threads/mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/call_once/once_flag.cc: New. * testsuite/30_threads/call_once/call_once1.cc: Likewise. * testsuite/30_threads/condition_variable/cons/1.cc: Likewise. * testsuite/30_threads/condition_variable/cons/copy_neg.cc: Likewise * testsuite/30_threads/condition_variable/cons/assign_neg.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/1.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/copy_neg.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/assign_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/timed_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_until/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_until/2.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/1.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/timed_mutex/lock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/2.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/3.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_until/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_until/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/lock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/lock/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/3.cc: Likewise. * testsuite/30_threads/unique_lock/modifiers/1.cc: Likewise. * testsuite/30_threads/unique_lock/modifiers/2.cc: Likewise. * testsuite/30_threads/unique_lock/cons/1.cc: Likewise. * testsuite/30_threads/unique_lock/cons/2.cc: Likewise. * testsuite/30_threads/unique_lock/cons/3.cc: Likewise. * testsuite/30_threads/unique_lock/cons/4.cc: Likewise. * testsuite/30_threads/unique_lock/cons/5.cc: Likewise. * testsuite/30_threads/unique_lock/cons/6.cc: Likewise. * testsuite/30_threads/unique_lock/locking/1.cc: Likewise. * testsuite/30_threads/unique_lock/locking/2.cc: Likewise. * testsuite/30_threads/unique_lock/locking/3.cc: Likewise. * testsuite/30_threads/unique_lock/locking/4.cc: Likewise. From-SVN: r139943
2008-09-03 19:46:09 +02:00
chrono::nanoseconds __ns =
condition_variable (condition_variable): Remove _M_internal_mutex. 2009-02-09 Benjamin Kosnik <bkoz@redhat.com> * include/std/condition_variable (condition_variable): Remove _M_internal_mutex. Add private __native_type typedef. * src/condition_variable.cc (condition_variable::notify_one): Remove _M_internal_mutex use. Use typedef. (condition_variable::notify_all): Same. * include/std/mutex (mutex): Add private __native_type typedef. Use it. (recursive_mutex): Same. (timed_mutex): Same. (recursive_timed_mutex): Same. (once_flag): Make __native_type typedef private. * include/std/thread (this_thread): Add minimal markup. * testsuite/30_threads/condition_variable_any/cons/assign_neg.cc: Adjust line numbers. * testsuite/30_threads/condition_variable_any/cons/copy_neg.cc: Same. * testsuite/30_threads/mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/mutex/cons/copy_neg.cc: Same. * testsuite/30_threads/timed_mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/timed_mutex/cons/copy_neg.cc: Same. * testsuite/30_threads/thread/cons/assign_neg.cc: Same. * testsuite/30_threads/thread/cons/copy_neg.cc: Same. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: Same. * testsuite/30_threads/condition_variable/cons/assign_neg.cc: Same. * testsuite/30_threads/condition_variable/cons/copy_neg.cc: Same. * testsuite/30_threads/recursive_timed_mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/recursive_timed_mutex/cons/copy_neg.cc: Same. * testsuite/util/thread/all.h: Testsuite utilities for testing thread. * testsuite/30_threads/condition_variable_any/native_handle/ typesizes.cc: New. * testsuite/30_threads/mutex/native_handle/typesizes.cc: Same. * testsuite/30_threads/timed_mutex/native_handle/typesizes.cc: Same. * testsuite/30_threads/thread/native_handle/typesizes.cc: Same. * testsuite/30_threads/recursive_mutex/native_handle/typesizes.cc: Same. * testsuite/30_threads/condition_variable/native_handle/ typesizes.cc: Same. * testsuite/30_threads/recursive_timed_mutex/native_handle/ typesizes.cc: Same. From-SVN: r144053
2009-02-10 09:29:57 +01:00
chrono::duration_cast<chrono::nanoseconds>(__atime - __s);
condition_variable (condition_variable): Remove _M_internal_mutex. 2009-02-09 Benjamin Kosnik <bkoz@redhat.com> * include/std/condition_variable (condition_variable): Remove _M_internal_mutex. Add private __native_type typedef. * src/condition_variable.cc (condition_variable::notify_one): Remove _M_internal_mutex use. Use typedef. (condition_variable::notify_all): Same. * include/std/mutex (mutex): Add private __native_type typedef. Use it. (recursive_mutex): Same. (timed_mutex): Same. (recursive_timed_mutex): Same. (once_flag): Make __native_type typedef private. * include/std/thread (this_thread): Add minimal markup. * testsuite/30_threads/condition_variable_any/cons/assign_neg.cc: Adjust line numbers. * testsuite/30_threads/condition_variable_any/cons/copy_neg.cc: Same. * testsuite/30_threads/mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/mutex/cons/copy_neg.cc: Same. * testsuite/30_threads/timed_mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/timed_mutex/cons/copy_neg.cc: Same. * testsuite/30_threads/thread/cons/assign_neg.cc: Same. * testsuite/30_threads/thread/cons/copy_neg.cc: Same. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: Same. * testsuite/30_threads/condition_variable/cons/assign_neg.cc: Same. * testsuite/30_threads/condition_variable/cons/copy_neg.cc: Same. * testsuite/30_threads/recursive_timed_mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/recursive_timed_mutex/cons/copy_neg.cc: Same. * testsuite/util/thread/all.h: Testsuite utilities for testing thread. * testsuite/30_threads/condition_variable_any/native_handle/ typesizes.cc: New. * testsuite/30_threads/mutex/native_handle/typesizes.cc: Same. * testsuite/30_threads/timed_mutex/native_handle/typesizes.cc: Same. * testsuite/30_threads/thread/native_handle/typesizes.cc: Same. * testsuite/30_threads/recursive_mutex/native_handle/typesizes.cc: Same. * testsuite/30_threads/condition_variable/native_handle/ typesizes.cc: Same. * testsuite/30_threads/recursive_timed_mutex/native_handle/ typesizes.cc: Same. From-SVN: r144053
2009-02-10 09:29:57 +01:00
__gthread_time_t __ts = {
static_cast<std::time_t>(__s.time_since_epoch().count()),
static_cast<long>(__ns.count())
};
condition_variable: Use new deleted ctors. 2008-09-03 Chris Fairles <chris.fairles@gmail.com> * include/std/condition_variable: Use new deleted ctors. * include/std/mutex: Likewise plus implement timed_mutex, recursive_timed_mutex and call_once. * src/condition_variable.cc: Implement wait(). Use gthread types. Remove _GTHREADS_HAS_COND checks in favor of global _GLIBCXX_HAS_GTHREADS. * src/mutex.cc (call_once): Implementation using TLS with mutex fallback. * config/abi/pre/gnu.ver: Add exported symbols. * testsuite/lib/libstdc++.exp (check_v3_target_gthreads): New. * testsuite/lib/dg-options.exp (dg-require-gthreads): Likewise. * testsuite/30_threads/lock_guard/requirements/typedefs.cc: Use dg-require-gthreads and dg-require-cstdint. * testsuite/30_threads/lock_guard/requirements/ explicit_instantiation.cc: Likewise. * testsuite/30_threads/mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/mutex/cons/1.cc: Likewise. * testsuite/30_threads/mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/mutex/lock/1.cc: Likewise. * testsuite/30_threads/mutex/unlock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/recursive_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/recursive_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/recursive_mutex/lock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/unique_lock/requirements/ explicit_instantiation.cc: Likewise. * testsuite/30_threads/unique_lock/requirements/typedefs.cc: Likewise. * testsuite/30_threads/mutex/cons/assign_neg.cc: Also adjust dg-error lines for deleted members. * testsuite/30_threads/mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/call_once/once_flag.cc: New. * testsuite/30_threads/call_once/call_once1.cc: Likewise. * testsuite/30_threads/condition_variable/cons/1.cc: Likewise. * testsuite/30_threads/condition_variable/cons/copy_neg.cc: Likewise * testsuite/30_threads/condition_variable/cons/assign_neg.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/1.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/copy_neg.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/assign_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/timed_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_until/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_until/2.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/1.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/timed_mutex/lock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/2.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/3.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_until/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_until/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/lock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/lock/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/3.cc: Likewise. * testsuite/30_threads/unique_lock/modifiers/1.cc: Likewise. * testsuite/30_threads/unique_lock/modifiers/2.cc: Likewise. * testsuite/30_threads/unique_lock/cons/1.cc: Likewise. * testsuite/30_threads/unique_lock/cons/2.cc: Likewise. * testsuite/30_threads/unique_lock/cons/3.cc: Likewise. * testsuite/30_threads/unique_lock/cons/4.cc: Likewise. * testsuite/30_threads/unique_lock/cons/5.cc: Likewise. * testsuite/30_threads/unique_lock/cons/6.cc: Likewise. * testsuite/30_threads/unique_lock/locking/1.cc: Likewise. * testsuite/30_threads/unique_lock/locking/2.cc: Likewise. * testsuite/30_threads/unique_lock/locking/3.cc: Likewise. * testsuite/30_threads/unique_lock/locking/4.cc: Likewise. From-SVN: r139943
2008-09-03 19:46:09 +02:00
condition_variable (condition_variable): Remove _M_internal_mutex. 2009-02-09 Benjamin Kosnik <bkoz@redhat.com> * include/std/condition_variable (condition_variable): Remove _M_internal_mutex. Add private __native_type typedef. * src/condition_variable.cc (condition_variable::notify_one): Remove _M_internal_mutex use. Use typedef. (condition_variable::notify_all): Same. * include/std/mutex (mutex): Add private __native_type typedef. Use it. (recursive_mutex): Same. (timed_mutex): Same. (recursive_timed_mutex): Same. (once_flag): Make __native_type typedef private. * include/std/thread (this_thread): Add minimal markup. * testsuite/30_threads/condition_variable_any/cons/assign_neg.cc: Adjust line numbers. * testsuite/30_threads/condition_variable_any/cons/copy_neg.cc: Same. * testsuite/30_threads/mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/mutex/cons/copy_neg.cc: Same. * testsuite/30_threads/timed_mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/timed_mutex/cons/copy_neg.cc: Same. * testsuite/30_threads/thread/cons/assign_neg.cc: Same. * testsuite/30_threads/thread/cons/copy_neg.cc: Same. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: Same. * testsuite/30_threads/condition_variable/cons/assign_neg.cc: Same. * testsuite/30_threads/condition_variable/cons/copy_neg.cc: Same. * testsuite/30_threads/recursive_timed_mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/recursive_timed_mutex/cons/copy_neg.cc: Same. * testsuite/util/thread/all.h: Testsuite utilities for testing thread. * testsuite/30_threads/condition_variable_any/native_handle/ typesizes.cc: New. * testsuite/30_threads/mutex/native_handle/typesizes.cc: Same. * testsuite/30_threads/timed_mutex/native_handle/typesizes.cc: Same. * testsuite/30_threads/thread/native_handle/typesizes.cc: Same. * testsuite/30_threads/recursive_mutex/native_handle/typesizes.cc: Same. * testsuite/30_threads/condition_variable/native_handle/ typesizes.cc: Same. * testsuite/30_threads/recursive_timed_mutex/native_handle/ typesizes.cc: Same. From-SVN: r144053
2009-02-10 09:29:57 +01:00
return !__gthread_recursive_mutex_timedlock(&_M_mutex, &__ts);
condition_variable: Use new deleted ctors. 2008-09-03 Chris Fairles <chris.fairles@gmail.com> * include/std/condition_variable: Use new deleted ctors. * include/std/mutex: Likewise plus implement timed_mutex, recursive_timed_mutex and call_once. * src/condition_variable.cc: Implement wait(). Use gthread types. Remove _GTHREADS_HAS_COND checks in favor of global _GLIBCXX_HAS_GTHREADS. * src/mutex.cc (call_once): Implementation using TLS with mutex fallback. * config/abi/pre/gnu.ver: Add exported symbols. * testsuite/lib/libstdc++.exp (check_v3_target_gthreads): New. * testsuite/lib/dg-options.exp (dg-require-gthreads): Likewise. * testsuite/30_threads/lock_guard/requirements/typedefs.cc: Use dg-require-gthreads and dg-require-cstdint. * testsuite/30_threads/lock_guard/requirements/ explicit_instantiation.cc: Likewise. * testsuite/30_threads/mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/mutex/cons/1.cc: Likewise. * testsuite/30_threads/mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/mutex/lock/1.cc: Likewise. * testsuite/30_threads/mutex/unlock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/recursive_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/recursive_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/recursive_mutex/lock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/unique_lock/requirements/ explicit_instantiation.cc: Likewise. * testsuite/30_threads/unique_lock/requirements/typedefs.cc: Likewise. * testsuite/30_threads/mutex/cons/assign_neg.cc: Also adjust dg-error lines for deleted members. * testsuite/30_threads/mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/call_once/once_flag.cc: New. * testsuite/30_threads/call_once/call_once1.cc: Likewise. * testsuite/30_threads/condition_variable/cons/1.cc: Likewise. * testsuite/30_threads/condition_variable/cons/copy_neg.cc: Likewise * testsuite/30_threads/condition_variable/cons/assign_neg.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/1.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/copy_neg.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/assign_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/timed_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_until/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_until/2.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/1.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/timed_mutex/lock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/2.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/3.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_until/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_until/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/lock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/lock/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/3.cc: Likewise. * testsuite/30_threads/unique_lock/modifiers/1.cc: Likewise. * testsuite/30_threads/unique_lock/modifiers/2.cc: Likewise. * testsuite/30_threads/unique_lock/cons/1.cc: Likewise. * testsuite/30_threads/unique_lock/cons/2.cc: Likewise. * testsuite/30_threads/unique_lock/cons/3.cc: Likewise. * testsuite/30_threads/unique_lock/cons/4.cc: Likewise. * testsuite/30_threads/unique_lock/cons/5.cc: Likewise. * testsuite/30_threads/unique_lock/cons/6.cc: Likewise. * testsuite/30_threads/unique_lock/locking/1.cc: Likewise. * testsuite/30_threads/unique_lock/locking/2.cc: Likewise. * testsuite/30_threads/unique_lock/locking/3.cc: Likewise. * testsuite/30_threads/unique_lock/locking/4.cc: Likewise. From-SVN: r139943
2008-09-03 19:46:09 +02:00
}
void
unlock()
{
// XXX EINVAL, EAGAIN, EBUSY
__gthread_recursive_mutex_unlock(&_M_mutex);
}
native_handle_type
native_handle()
condition_variable: Use new deleted ctors. 2008-09-03 Chris Fairles <chris.fairles@gmail.com> * include/std/condition_variable: Use new deleted ctors. * include/std/mutex: Likewise plus implement timed_mutex, recursive_timed_mutex and call_once. * src/condition_variable.cc: Implement wait(). Use gthread types. Remove _GTHREADS_HAS_COND checks in favor of global _GLIBCXX_HAS_GTHREADS. * src/mutex.cc (call_once): Implementation using TLS with mutex fallback. * config/abi/pre/gnu.ver: Add exported symbols. * testsuite/lib/libstdc++.exp (check_v3_target_gthreads): New. * testsuite/lib/dg-options.exp (dg-require-gthreads): Likewise. * testsuite/30_threads/lock_guard/requirements/typedefs.cc: Use dg-require-gthreads and dg-require-cstdint. * testsuite/30_threads/lock_guard/requirements/ explicit_instantiation.cc: Likewise. * testsuite/30_threads/mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/mutex/cons/1.cc: Likewise. * testsuite/30_threads/mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/mutex/lock/1.cc: Likewise. * testsuite/30_threads/mutex/unlock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/recursive_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/recursive_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/recursive_mutex/lock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/unique_lock/requirements/ explicit_instantiation.cc: Likewise. * testsuite/30_threads/unique_lock/requirements/typedefs.cc: Likewise. * testsuite/30_threads/mutex/cons/assign_neg.cc: Also adjust dg-error lines for deleted members. * testsuite/30_threads/mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/call_once/once_flag.cc: New. * testsuite/30_threads/call_once/call_once1.cc: Likewise. * testsuite/30_threads/condition_variable/cons/1.cc: Likewise. * testsuite/30_threads/condition_variable/cons/copy_neg.cc: Likewise * testsuite/30_threads/condition_variable/cons/assign_neg.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/1.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/copy_neg.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/assign_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/timed_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_until/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_until/2.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/1.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/timed_mutex/lock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/2.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/3.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_until/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_until/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/lock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/lock/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/3.cc: Likewise. * testsuite/30_threads/unique_lock/modifiers/1.cc: Likewise. * testsuite/30_threads/unique_lock/modifiers/2.cc: Likewise. * testsuite/30_threads/unique_lock/cons/1.cc: Likewise. * testsuite/30_threads/unique_lock/cons/2.cc: Likewise. * testsuite/30_threads/unique_lock/cons/3.cc: Likewise. * testsuite/30_threads/unique_lock/cons/4.cc: Likewise. * testsuite/30_threads/unique_lock/cons/5.cc: Likewise. * testsuite/30_threads/unique_lock/cons/6.cc: Likewise. * testsuite/30_threads/unique_lock/locking/1.cc: Likewise. * testsuite/30_threads/unique_lock/locking/2.cc: Likewise. * testsuite/30_threads/unique_lock/locking/3.cc: Likewise. * testsuite/30_threads/unique_lock/locking/4.cc: Likewise. From-SVN: r139943
2008-09-03 19:46:09 +02:00
{ return &_M_mutex; }
private:
condition_variable: Use new deleted ctors. 2008-09-03 Chris Fairles <chris.fairles@gmail.com> * include/std/condition_variable: Use new deleted ctors. * include/std/mutex: Likewise plus implement timed_mutex, recursive_timed_mutex and call_once. * src/condition_variable.cc: Implement wait(). Use gthread types. Remove _GTHREADS_HAS_COND checks in favor of global _GLIBCXX_HAS_GTHREADS. * src/mutex.cc (call_once): Implementation using TLS with mutex fallback. * config/abi/pre/gnu.ver: Add exported symbols. * testsuite/lib/libstdc++.exp (check_v3_target_gthreads): New. * testsuite/lib/dg-options.exp (dg-require-gthreads): Likewise. * testsuite/30_threads/lock_guard/requirements/typedefs.cc: Use dg-require-gthreads and dg-require-cstdint. * testsuite/30_threads/lock_guard/requirements/ explicit_instantiation.cc: Likewise. * testsuite/30_threads/mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/mutex/cons/1.cc: Likewise. * testsuite/30_threads/mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/mutex/lock/1.cc: Likewise. * testsuite/30_threads/mutex/unlock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/recursive_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/recursive_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/recursive_mutex/lock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/unique_lock/requirements/ explicit_instantiation.cc: Likewise. * testsuite/30_threads/unique_lock/requirements/typedefs.cc: Likewise. * testsuite/30_threads/mutex/cons/assign_neg.cc: Also adjust dg-error lines for deleted members. * testsuite/30_threads/mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/call_once/once_flag.cc: New. * testsuite/30_threads/call_once/call_once1.cc: Likewise. * testsuite/30_threads/condition_variable/cons/1.cc: Likewise. * testsuite/30_threads/condition_variable/cons/copy_neg.cc: Likewise * testsuite/30_threads/condition_variable/cons/assign_neg.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/1.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/copy_neg.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/assign_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/timed_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_until/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_until/2.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/1.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/timed_mutex/lock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/2.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/3.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_until/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_until/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/lock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/lock/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/3.cc: Likewise. * testsuite/30_threads/unique_lock/modifiers/1.cc: Likewise. * testsuite/30_threads/unique_lock/modifiers/2.cc: Likewise. * testsuite/30_threads/unique_lock/cons/1.cc: Likewise. * testsuite/30_threads/unique_lock/cons/2.cc: Likewise. * testsuite/30_threads/unique_lock/cons/3.cc: Likewise. * testsuite/30_threads/unique_lock/cons/4.cc: Likewise. * testsuite/30_threads/unique_lock/cons/5.cc: Likewise. * testsuite/30_threads/unique_lock/cons/6.cc: Likewise. * testsuite/30_threads/unique_lock/locking/1.cc: Likewise. * testsuite/30_threads/unique_lock/locking/2.cc: Likewise. * testsuite/30_threads/unique_lock/locking/3.cc: Likewise. * testsuite/30_threads/unique_lock/locking/4.cc: Likewise. From-SVN: r139943
2008-09-03 19:46:09 +02:00
template<typename _Rep, typename _Period>
typename enable_if<
condition_variable (condition_variable): Remove _M_internal_mutex. 2009-02-09 Benjamin Kosnik <bkoz@redhat.com> * include/std/condition_variable (condition_variable): Remove _M_internal_mutex. Add private __native_type typedef. * src/condition_variable.cc (condition_variable::notify_one): Remove _M_internal_mutex use. Use typedef. (condition_variable::notify_all): Same. * include/std/mutex (mutex): Add private __native_type typedef. Use it. (recursive_mutex): Same. (timed_mutex): Same. (recursive_timed_mutex): Same. (once_flag): Make __native_type typedef private. * include/std/thread (this_thread): Add minimal markup. * testsuite/30_threads/condition_variable_any/cons/assign_neg.cc: Adjust line numbers. * testsuite/30_threads/condition_variable_any/cons/copy_neg.cc: Same. * testsuite/30_threads/mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/mutex/cons/copy_neg.cc: Same. * testsuite/30_threads/timed_mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/timed_mutex/cons/copy_neg.cc: Same. * testsuite/30_threads/thread/cons/assign_neg.cc: Same. * testsuite/30_threads/thread/cons/copy_neg.cc: Same. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: Same. * testsuite/30_threads/condition_variable/cons/assign_neg.cc: Same. * testsuite/30_threads/condition_variable/cons/copy_neg.cc: Same. * testsuite/30_threads/recursive_timed_mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/recursive_timed_mutex/cons/copy_neg.cc: Same. * testsuite/util/thread/all.h: Testsuite utilities for testing thread. * testsuite/30_threads/condition_variable_any/native_handle/ typesizes.cc: New. * testsuite/30_threads/mutex/native_handle/typesizes.cc: Same. * testsuite/30_threads/timed_mutex/native_handle/typesizes.cc: Same. * testsuite/30_threads/thread/native_handle/typesizes.cc: Same. * testsuite/30_threads/recursive_mutex/native_handle/typesizes.cc: Same. * testsuite/30_threads/condition_variable/native_handle/ typesizes.cc: Same. * testsuite/30_threads/recursive_timed_mutex/native_handle/ typesizes.cc: Same. From-SVN: r144053
2009-02-10 09:29:57 +01:00
ratio_less_equal<__clock_t::period, _Period>::value, bool>::type
condition_variable: Use new deleted ctors. 2008-09-03 Chris Fairles <chris.fairles@gmail.com> * include/std/condition_variable: Use new deleted ctors. * include/std/mutex: Likewise plus implement timed_mutex, recursive_timed_mutex and call_once. * src/condition_variable.cc: Implement wait(). Use gthread types. Remove _GTHREADS_HAS_COND checks in favor of global _GLIBCXX_HAS_GTHREADS. * src/mutex.cc (call_once): Implementation using TLS with mutex fallback. * config/abi/pre/gnu.ver: Add exported symbols. * testsuite/lib/libstdc++.exp (check_v3_target_gthreads): New. * testsuite/lib/dg-options.exp (dg-require-gthreads): Likewise. * testsuite/30_threads/lock_guard/requirements/typedefs.cc: Use dg-require-gthreads and dg-require-cstdint. * testsuite/30_threads/lock_guard/requirements/ explicit_instantiation.cc: Likewise. * testsuite/30_threads/mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/mutex/cons/1.cc: Likewise. * testsuite/30_threads/mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/mutex/lock/1.cc: Likewise. * testsuite/30_threads/mutex/unlock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/recursive_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/recursive_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/recursive_mutex/lock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/unique_lock/requirements/ explicit_instantiation.cc: Likewise. * testsuite/30_threads/unique_lock/requirements/typedefs.cc: Likewise. * testsuite/30_threads/mutex/cons/assign_neg.cc: Also adjust dg-error lines for deleted members. * testsuite/30_threads/mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/call_once/once_flag.cc: New. * testsuite/30_threads/call_once/call_once1.cc: Likewise. * testsuite/30_threads/condition_variable/cons/1.cc: Likewise. * testsuite/30_threads/condition_variable/cons/copy_neg.cc: Likewise * testsuite/30_threads/condition_variable/cons/assign_neg.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/1.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/copy_neg.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/assign_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/timed_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_until/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_until/2.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/1.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/timed_mutex/lock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/2.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/3.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_until/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_until/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/lock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/lock/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/3.cc: Likewise. * testsuite/30_threads/unique_lock/modifiers/1.cc: Likewise. * testsuite/30_threads/unique_lock/modifiers/2.cc: Likewise. * testsuite/30_threads/unique_lock/cons/1.cc: Likewise. * testsuite/30_threads/unique_lock/cons/2.cc: Likewise. * testsuite/30_threads/unique_lock/cons/3.cc: Likewise. * testsuite/30_threads/unique_lock/cons/4.cc: Likewise. * testsuite/30_threads/unique_lock/cons/5.cc: Likewise. * testsuite/30_threads/unique_lock/cons/6.cc: Likewise. * testsuite/30_threads/unique_lock/locking/1.cc: Likewise. * testsuite/30_threads/unique_lock/locking/2.cc: Likewise. * testsuite/30_threads/unique_lock/locking/3.cc: Likewise. * testsuite/30_threads/unique_lock/locking/4.cc: Likewise. From-SVN: r139943
2008-09-03 19:46:09 +02:00
__try_lock_for_impl(const chrono::duration<_Rep, _Period>& __rtime)
{
condition_variable (condition_variable): Remove _M_internal_mutex. 2009-02-09 Benjamin Kosnik <bkoz@redhat.com> * include/std/condition_variable (condition_variable): Remove _M_internal_mutex. Add private __native_type typedef. * src/condition_variable.cc (condition_variable::notify_one): Remove _M_internal_mutex use. Use typedef. (condition_variable::notify_all): Same. * include/std/mutex (mutex): Add private __native_type typedef. Use it. (recursive_mutex): Same. (timed_mutex): Same. (recursive_timed_mutex): Same. (once_flag): Make __native_type typedef private. * include/std/thread (this_thread): Add minimal markup. * testsuite/30_threads/condition_variable_any/cons/assign_neg.cc: Adjust line numbers. * testsuite/30_threads/condition_variable_any/cons/copy_neg.cc: Same. * testsuite/30_threads/mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/mutex/cons/copy_neg.cc: Same. * testsuite/30_threads/timed_mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/timed_mutex/cons/copy_neg.cc: Same. * testsuite/30_threads/thread/cons/assign_neg.cc: Same. * testsuite/30_threads/thread/cons/copy_neg.cc: Same. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: Same. * testsuite/30_threads/condition_variable/cons/assign_neg.cc: Same. * testsuite/30_threads/condition_variable/cons/copy_neg.cc: Same. * testsuite/30_threads/recursive_timed_mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/recursive_timed_mutex/cons/copy_neg.cc: Same. * testsuite/util/thread/all.h: Testsuite utilities for testing thread. * testsuite/30_threads/condition_variable_any/native_handle/ typesizes.cc: New. * testsuite/30_threads/mutex/native_handle/typesizes.cc: Same. * testsuite/30_threads/timed_mutex/native_handle/typesizes.cc: Same. * testsuite/30_threads/thread/native_handle/typesizes.cc: Same. * testsuite/30_threads/recursive_mutex/native_handle/typesizes.cc: Same. * testsuite/30_threads/condition_variable/native_handle/ typesizes.cc: Same. * testsuite/30_threads/recursive_timed_mutex/native_handle/ typesizes.cc: Same. From-SVN: r144053
2009-02-10 09:29:57 +01:00
__clock_t::time_point __atime = __clock_t::now()
+ chrono::duration_cast<__clock_t::duration>(__rtime);
condition_variable: Use new deleted ctors. 2008-09-03 Chris Fairles <chris.fairles@gmail.com> * include/std/condition_variable: Use new deleted ctors. * include/std/mutex: Likewise plus implement timed_mutex, recursive_timed_mutex and call_once. * src/condition_variable.cc: Implement wait(). Use gthread types. Remove _GTHREADS_HAS_COND checks in favor of global _GLIBCXX_HAS_GTHREADS. * src/mutex.cc (call_once): Implementation using TLS with mutex fallback. * config/abi/pre/gnu.ver: Add exported symbols. * testsuite/lib/libstdc++.exp (check_v3_target_gthreads): New. * testsuite/lib/dg-options.exp (dg-require-gthreads): Likewise. * testsuite/30_threads/lock_guard/requirements/typedefs.cc: Use dg-require-gthreads and dg-require-cstdint. * testsuite/30_threads/lock_guard/requirements/ explicit_instantiation.cc: Likewise. * testsuite/30_threads/mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/mutex/cons/1.cc: Likewise. * testsuite/30_threads/mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/mutex/lock/1.cc: Likewise. * testsuite/30_threads/mutex/unlock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/recursive_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/recursive_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/recursive_mutex/lock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/unique_lock/requirements/ explicit_instantiation.cc: Likewise. * testsuite/30_threads/unique_lock/requirements/typedefs.cc: Likewise. * testsuite/30_threads/mutex/cons/assign_neg.cc: Also adjust dg-error lines for deleted members. * testsuite/30_threads/mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/call_once/once_flag.cc: New. * testsuite/30_threads/call_once/call_once1.cc: Likewise. * testsuite/30_threads/condition_variable/cons/1.cc: Likewise. * testsuite/30_threads/condition_variable/cons/copy_neg.cc: Likewise * testsuite/30_threads/condition_variable/cons/assign_neg.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/1.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/copy_neg.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/assign_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/timed_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_until/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_until/2.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/1.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/timed_mutex/lock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/2.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/3.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_until/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_until/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/lock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/lock/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/3.cc: Likewise. * testsuite/30_threads/unique_lock/modifiers/1.cc: Likewise. * testsuite/30_threads/unique_lock/modifiers/2.cc: Likewise. * testsuite/30_threads/unique_lock/cons/1.cc: Likewise. * testsuite/30_threads/unique_lock/cons/2.cc: Likewise. * testsuite/30_threads/unique_lock/cons/3.cc: Likewise. * testsuite/30_threads/unique_lock/cons/4.cc: Likewise. * testsuite/30_threads/unique_lock/cons/5.cc: Likewise. * testsuite/30_threads/unique_lock/cons/6.cc: Likewise. * testsuite/30_threads/unique_lock/locking/1.cc: Likewise. * testsuite/30_threads/unique_lock/locking/2.cc: Likewise. * testsuite/30_threads/unique_lock/locking/3.cc: Likewise. * testsuite/30_threads/unique_lock/locking/4.cc: Likewise. From-SVN: r139943
2008-09-03 19:46:09 +02:00
condition_variable (condition_variable): Remove _M_internal_mutex. 2009-02-09 Benjamin Kosnik <bkoz@redhat.com> * include/std/condition_variable (condition_variable): Remove _M_internal_mutex. Add private __native_type typedef. * src/condition_variable.cc (condition_variable::notify_one): Remove _M_internal_mutex use. Use typedef. (condition_variable::notify_all): Same. * include/std/mutex (mutex): Add private __native_type typedef. Use it. (recursive_mutex): Same. (timed_mutex): Same. (recursive_timed_mutex): Same. (once_flag): Make __native_type typedef private. * include/std/thread (this_thread): Add minimal markup. * testsuite/30_threads/condition_variable_any/cons/assign_neg.cc: Adjust line numbers. * testsuite/30_threads/condition_variable_any/cons/copy_neg.cc: Same. * testsuite/30_threads/mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/mutex/cons/copy_neg.cc: Same. * testsuite/30_threads/timed_mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/timed_mutex/cons/copy_neg.cc: Same. * testsuite/30_threads/thread/cons/assign_neg.cc: Same. * testsuite/30_threads/thread/cons/copy_neg.cc: Same. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: Same. * testsuite/30_threads/condition_variable/cons/assign_neg.cc: Same. * testsuite/30_threads/condition_variable/cons/copy_neg.cc: Same. * testsuite/30_threads/recursive_timed_mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/recursive_timed_mutex/cons/copy_neg.cc: Same. * testsuite/util/thread/all.h: Testsuite utilities for testing thread. * testsuite/30_threads/condition_variable_any/native_handle/ typesizes.cc: New. * testsuite/30_threads/mutex/native_handle/typesizes.cc: Same. * testsuite/30_threads/timed_mutex/native_handle/typesizes.cc: Same. * testsuite/30_threads/thread/native_handle/typesizes.cc: Same. * testsuite/30_threads/recursive_mutex/native_handle/typesizes.cc: Same. * testsuite/30_threads/condition_variable/native_handle/ typesizes.cc: Same. * testsuite/30_threads/recursive_timed_mutex/native_handle/ typesizes.cc: Same. From-SVN: r144053
2009-02-10 09:29:57 +01:00
return try_lock_until(__atime);
condition_variable: Use new deleted ctors. 2008-09-03 Chris Fairles <chris.fairles@gmail.com> * include/std/condition_variable: Use new deleted ctors. * include/std/mutex: Likewise plus implement timed_mutex, recursive_timed_mutex and call_once. * src/condition_variable.cc: Implement wait(). Use gthread types. Remove _GTHREADS_HAS_COND checks in favor of global _GLIBCXX_HAS_GTHREADS. * src/mutex.cc (call_once): Implementation using TLS with mutex fallback. * config/abi/pre/gnu.ver: Add exported symbols. * testsuite/lib/libstdc++.exp (check_v3_target_gthreads): New. * testsuite/lib/dg-options.exp (dg-require-gthreads): Likewise. * testsuite/30_threads/lock_guard/requirements/typedefs.cc: Use dg-require-gthreads and dg-require-cstdint. * testsuite/30_threads/lock_guard/requirements/ explicit_instantiation.cc: Likewise. * testsuite/30_threads/mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/mutex/cons/1.cc: Likewise. * testsuite/30_threads/mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/mutex/lock/1.cc: Likewise. * testsuite/30_threads/mutex/unlock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/recursive_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/recursive_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/recursive_mutex/lock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/unique_lock/requirements/ explicit_instantiation.cc: Likewise. * testsuite/30_threads/unique_lock/requirements/typedefs.cc: Likewise. * testsuite/30_threads/mutex/cons/assign_neg.cc: Also adjust dg-error lines for deleted members. * testsuite/30_threads/mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/call_once/once_flag.cc: New. * testsuite/30_threads/call_once/call_once1.cc: Likewise. * testsuite/30_threads/condition_variable/cons/1.cc: Likewise. * testsuite/30_threads/condition_variable/cons/copy_neg.cc: Likewise * testsuite/30_threads/condition_variable/cons/assign_neg.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/1.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/copy_neg.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/assign_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/timed_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_until/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_until/2.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/1.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/timed_mutex/lock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/2.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/3.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_until/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_until/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/lock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/lock/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/3.cc: Likewise. * testsuite/30_threads/unique_lock/modifiers/1.cc: Likewise. * testsuite/30_threads/unique_lock/modifiers/2.cc: Likewise. * testsuite/30_threads/unique_lock/cons/1.cc: Likewise. * testsuite/30_threads/unique_lock/cons/2.cc: Likewise. * testsuite/30_threads/unique_lock/cons/3.cc: Likewise. * testsuite/30_threads/unique_lock/cons/4.cc: Likewise. * testsuite/30_threads/unique_lock/cons/5.cc: Likewise. * testsuite/30_threads/unique_lock/cons/6.cc: Likewise. * testsuite/30_threads/unique_lock/locking/1.cc: Likewise. * testsuite/30_threads/unique_lock/locking/2.cc: Likewise. * testsuite/30_threads/unique_lock/locking/3.cc: Likewise. * testsuite/30_threads/unique_lock/locking/4.cc: Likewise. From-SVN: r139943
2008-09-03 19:46:09 +02:00
}
template <typename _Rep, typename _Period>
typename enable_if<
condition_variable (condition_variable): Remove _M_internal_mutex. 2009-02-09 Benjamin Kosnik <bkoz@redhat.com> * include/std/condition_variable (condition_variable): Remove _M_internal_mutex. Add private __native_type typedef. * src/condition_variable.cc (condition_variable::notify_one): Remove _M_internal_mutex use. Use typedef. (condition_variable::notify_all): Same. * include/std/mutex (mutex): Add private __native_type typedef. Use it. (recursive_mutex): Same. (timed_mutex): Same. (recursive_timed_mutex): Same. (once_flag): Make __native_type typedef private. * include/std/thread (this_thread): Add minimal markup. * testsuite/30_threads/condition_variable_any/cons/assign_neg.cc: Adjust line numbers. * testsuite/30_threads/condition_variable_any/cons/copy_neg.cc: Same. * testsuite/30_threads/mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/mutex/cons/copy_neg.cc: Same. * testsuite/30_threads/timed_mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/timed_mutex/cons/copy_neg.cc: Same. * testsuite/30_threads/thread/cons/assign_neg.cc: Same. * testsuite/30_threads/thread/cons/copy_neg.cc: Same. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: Same. * testsuite/30_threads/condition_variable/cons/assign_neg.cc: Same. * testsuite/30_threads/condition_variable/cons/copy_neg.cc: Same. * testsuite/30_threads/recursive_timed_mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/recursive_timed_mutex/cons/copy_neg.cc: Same. * testsuite/util/thread/all.h: Testsuite utilities for testing thread. * testsuite/30_threads/condition_variable_any/native_handle/ typesizes.cc: New. * testsuite/30_threads/mutex/native_handle/typesizes.cc: Same. * testsuite/30_threads/timed_mutex/native_handle/typesizes.cc: Same. * testsuite/30_threads/thread/native_handle/typesizes.cc: Same. * testsuite/30_threads/recursive_mutex/native_handle/typesizes.cc: Same. * testsuite/30_threads/condition_variable/native_handle/ typesizes.cc: Same. * testsuite/30_threads/recursive_timed_mutex/native_handle/ typesizes.cc: Same. From-SVN: r144053
2009-02-10 09:29:57 +01:00
!ratio_less_equal<__clock_t::period, _Period>::value, bool>::type
condition_variable: Use new deleted ctors. 2008-09-03 Chris Fairles <chris.fairles@gmail.com> * include/std/condition_variable: Use new deleted ctors. * include/std/mutex: Likewise plus implement timed_mutex, recursive_timed_mutex and call_once. * src/condition_variable.cc: Implement wait(). Use gthread types. Remove _GTHREADS_HAS_COND checks in favor of global _GLIBCXX_HAS_GTHREADS. * src/mutex.cc (call_once): Implementation using TLS with mutex fallback. * config/abi/pre/gnu.ver: Add exported symbols. * testsuite/lib/libstdc++.exp (check_v3_target_gthreads): New. * testsuite/lib/dg-options.exp (dg-require-gthreads): Likewise. * testsuite/30_threads/lock_guard/requirements/typedefs.cc: Use dg-require-gthreads and dg-require-cstdint. * testsuite/30_threads/lock_guard/requirements/ explicit_instantiation.cc: Likewise. * testsuite/30_threads/mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/mutex/cons/1.cc: Likewise. * testsuite/30_threads/mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/mutex/lock/1.cc: Likewise. * testsuite/30_threads/mutex/unlock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/recursive_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/recursive_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/recursive_mutex/lock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/unique_lock/requirements/ explicit_instantiation.cc: Likewise. * testsuite/30_threads/unique_lock/requirements/typedefs.cc: Likewise. * testsuite/30_threads/mutex/cons/assign_neg.cc: Also adjust dg-error lines for deleted members. * testsuite/30_threads/mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/call_once/once_flag.cc: New. * testsuite/30_threads/call_once/call_once1.cc: Likewise. * testsuite/30_threads/condition_variable/cons/1.cc: Likewise. * testsuite/30_threads/condition_variable/cons/copy_neg.cc: Likewise * testsuite/30_threads/condition_variable/cons/assign_neg.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/1.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/copy_neg.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/assign_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/timed_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_until/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_until/2.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/1.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/timed_mutex/lock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/2.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/3.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_until/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_until/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/lock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/lock/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/3.cc: Likewise. * testsuite/30_threads/unique_lock/modifiers/1.cc: Likewise. * testsuite/30_threads/unique_lock/modifiers/2.cc: Likewise. * testsuite/30_threads/unique_lock/cons/1.cc: Likewise. * testsuite/30_threads/unique_lock/cons/2.cc: Likewise. * testsuite/30_threads/unique_lock/cons/3.cc: Likewise. * testsuite/30_threads/unique_lock/cons/4.cc: Likewise. * testsuite/30_threads/unique_lock/cons/5.cc: Likewise. * testsuite/30_threads/unique_lock/cons/6.cc: Likewise. * testsuite/30_threads/unique_lock/locking/1.cc: Likewise. * testsuite/30_threads/unique_lock/locking/2.cc: Likewise. * testsuite/30_threads/unique_lock/locking/3.cc: Likewise. * testsuite/30_threads/unique_lock/locking/4.cc: Likewise. From-SVN: r139943
2008-09-03 19:46:09 +02:00
__try_lock_for_impl(const chrono::duration<_Rep, _Period>& __rtime)
{
condition_variable (condition_variable): Remove _M_internal_mutex. 2009-02-09 Benjamin Kosnik <bkoz@redhat.com> * include/std/condition_variable (condition_variable): Remove _M_internal_mutex. Add private __native_type typedef. * src/condition_variable.cc (condition_variable::notify_one): Remove _M_internal_mutex use. Use typedef. (condition_variable::notify_all): Same. * include/std/mutex (mutex): Add private __native_type typedef. Use it. (recursive_mutex): Same. (timed_mutex): Same. (recursive_timed_mutex): Same. (once_flag): Make __native_type typedef private. * include/std/thread (this_thread): Add minimal markup. * testsuite/30_threads/condition_variable_any/cons/assign_neg.cc: Adjust line numbers. * testsuite/30_threads/condition_variable_any/cons/copy_neg.cc: Same. * testsuite/30_threads/mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/mutex/cons/copy_neg.cc: Same. * testsuite/30_threads/timed_mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/timed_mutex/cons/copy_neg.cc: Same. * testsuite/30_threads/thread/cons/assign_neg.cc: Same. * testsuite/30_threads/thread/cons/copy_neg.cc: Same. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: Same. * testsuite/30_threads/condition_variable/cons/assign_neg.cc: Same. * testsuite/30_threads/condition_variable/cons/copy_neg.cc: Same. * testsuite/30_threads/recursive_timed_mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/recursive_timed_mutex/cons/copy_neg.cc: Same. * testsuite/util/thread/all.h: Testsuite utilities for testing thread. * testsuite/30_threads/condition_variable_any/native_handle/ typesizes.cc: New. * testsuite/30_threads/mutex/native_handle/typesizes.cc: Same. * testsuite/30_threads/timed_mutex/native_handle/typesizes.cc: Same. * testsuite/30_threads/thread/native_handle/typesizes.cc: Same. * testsuite/30_threads/recursive_mutex/native_handle/typesizes.cc: Same. * testsuite/30_threads/condition_variable/native_handle/ typesizes.cc: Same. * testsuite/30_threads/recursive_timed_mutex/native_handle/ typesizes.cc: Same. From-SVN: r144053
2009-02-10 09:29:57 +01:00
__clock_t::time_point __atime = __clock_t::now()
condition_variable: Use new deleted ctors. 2008-09-03 Chris Fairles <chris.fairles@gmail.com> * include/std/condition_variable: Use new deleted ctors. * include/std/mutex: Likewise plus implement timed_mutex, recursive_timed_mutex and call_once. * src/condition_variable.cc: Implement wait(). Use gthread types. Remove _GTHREADS_HAS_COND checks in favor of global _GLIBCXX_HAS_GTHREADS. * src/mutex.cc (call_once): Implementation using TLS with mutex fallback. * config/abi/pre/gnu.ver: Add exported symbols. * testsuite/lib/libstdc++.exp (check_v3_target_gthreads): New. * testsuite/lib/dg-options.exp (dg-require-gthreads): Likewise. * testsuite/30_threads/lock_guard/requirements/typedefs.cc: Use dg-require-gthreads and dg-require-cstdint. * testsuite/30_threads/lock_guard/requirements/ explicit_instantiation.cc: Likewise. * testsuite/30_threads/mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/mutex/cons/1.cc: Likewise. * testsuite/30_threads/mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/mutex/lock/1.cc: Likewise. * testsuite/30_threads/mutex/unlock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/recursive_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/recursive_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/recursive_mutex/lock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/unique_lock/requirements/ explicit_instantiation.cc: Likewise. * testsuite/30_threads/unique_lock/requirements/typedefs.cc: Likewise. * testsuite/30_threads/mutex/cons/assign_neg.cc: Also adjust dg-error lines for deleted members. * testsuite/30_threads/mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/call_once/once_flag.cc: New. * testsuite/30_threads/call_once/call_once1.cc: Likewise. * testsuite/30_threads/condition_variable/cons/1.cc: Likewise. * testsuite/30_threads/condition_variable/cons/copy_neg.cc: Likewise * testsuite/30_threads/condition_variable/cons/assign_neg.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/1.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/copy_neg.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/assign_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/timed_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_until/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_until/2.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/1.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/timed_mutex/lock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/2.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/3.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_until/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_until/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/lock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/lock/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/3.cc: Likewise. * testsuite/30_threads/unique_lock/modifiers/1.cc: Likewise. * testsuite/30_threads/unique_lock/modifiers/2.cc: Likewise. * testsuite/30_threads/unique_lock/cons/1.cc: Likewise. * testsuite/30_threads/unique_lock/cons/2.cc: Likewise. * testsuite/30_threads/unique_lock/cons/3.cc: Likewise. * testsuite/30_threads/unique_lock/cons/4.cc: Likewise. * testsuite/30_threads/unique_lock/cons/5.cc: Likewise. * testsuite/30_threads/unique_lock/cons/6.cc: Likewise. * testsuite/30_threads/unique_lock/locking/1.cc: Likewise. * testsuite/30_threads/unique_lock/locking/2.cc: Likewise. * testsuite/30_threads/unique_lock/locking/3.cc: Likewise. * testsuite/30_threads/unique_lock/locking/4.cc: Likewise. From-SVN: r139943
2008-09-03 19:46:09 +02:00
+ ++chrono::duration_cast<__clock_t::duration>(__rtime);
condition_variable (condition_variable): Remove _M_internal_mutex. 2009-02-09 Benjamin Kosnik <bkoz@redhat.com> * include/std/condition_variable (condition_variable): Remove _M_internal_mutex. Add private __native_type typedef. * src/condition_variable.cc (condition_variable::notify_one): Remove _M_internal_mutex use. Use typedef. (condition_variable::notify_all): Same. * include/std/mutex (mutex): Add private __native_type typedef. Use it. (recursive_mutex): Same. (timed_mutex): Same. (recursive_timed_mutex): Same. (once_flag): Make __native_type typedef private. * include/std/thread (this_thread): Add minimal markup. * testsuite/30_threads/condition_variable_any/cons/assign_neg.cc: Adjust line numbers. * testsuite/30_threads/condition_variable_any/cons/copy_neg.cc: Same. * testsuite/30_threads/mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/mutex/cons/copy_neg.cc: Same. * testsuite/30_threads/timed_mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/timed_mutex/cons/copy_neg.cc: Same. * testsuite/30_threads/thread/cons/assign_neg.cc: Same. * testsuite/30_threads/thread/cons/copy_neg.cc: Same. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: Same. * testsuite/30_threads/condition_variable/cons/assign_neg.cc: Same. * testsuite/30_threads/condition_variable/cons/copy_neg.cc: Same. * testsuite/30_threads/recursive_timed_mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/recursive_timed_mutex/cons/copy_neg.cc: Same. * testsuite/util/thread/all.h: Testsuite utilities for testing thread. * testsuite/30_threads/condition_variable_any/native_handle/ typesizes.cc: New. * testsuite/30_threads/mutex/native_handle/typesizes.cc: Same. * testsuite/30_threads/timed_mutex/native_handle/typesizes.cc: Same. * testsuite/30_threads/thread/native_handle/typesizes.cc: Same. * testsuite/30_threads/recursive_mutex/native_handle/typesizes.cc: Same. * testsuite/30_threads/condition_variable/native_handle/ typesizes.cc: Same. * testsuite/30_threads/recursive_timed_mutex/native_handle/ typesizes.cc: Same. From-SVN: r144053
2009-02-10 09:29:57 +01:00
return try_lock_until(__atime);
condition_variable: Use new deleted ctors. 2008-09-03 Chris Fairles <chris.fairles@gmail.com> * include/std/condition_variable: Use new deleted ctors. * include/std/mutex: Likewise plus implement timed_mutex, recursive_timed_mutex and call_once. * src/condition_variable.cc: Implement wait(). Use gthread types. Remove _GTHREADS_HAS_COND checks in favor of global _GLIBCXX_HAS_GTHREADS. * src/mutex.cc (call_once): Implementation using TLS with mutex fallback. * config/abi/pre/gnu.ver: Add exported symbols. * testsuite/lib/libstdc++.exp (check_v3_target_gthreads): New. * testsuite/lib/dg-options.exp (dg-require-gthreads): Likewise. * testsuite/30_threads/lock_guard/requirements/typedefs.cc: Use dg-require-gthreads and dg-require-cstdint. * testsuite/30_threads/lock_guard/requirements/ explicit_instantiation.cc: Likewise. * testsuite/30_threads/mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/mutex/cons/1.cc: Likewise. * testsuite/30_threads/mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/mutex/lock/1.cc: Likewise. * testsuite/30_threads/mutex/unlock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/recursive_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/recursive_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/recursive_mutex/lock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/unique_lock/requirements/ explicit_instantiation.cc: Likewise. * testsuite/30_threads/unique_lock/requirements/typedefs.cc: Likewise. * testsuite/30_threads/mutex/cons/assign_neg.cc: Also adjust dg-error lines for deleted members. * testsuite/30_threads/mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/call_once/once_flag.cc: New. * testsuite/30_threads/call_once/call_once1.cc: Likewise. * testsuite/30_threads/condition_variable/cons/1.cc: Likewise. * testsuite/30_threads/condition_variable/cons/copy_neg.cc: Likewise * testsuite/30_threads/condition_variable/cons/assign_neg.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/1.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/copy_neg.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/assign_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/timed_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_until/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_until/2.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/1.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/timed_mutex/lock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/2.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/3.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_until/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_until/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/lock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/lock/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/3.cc: Likewise. * testsuite/30_threads/unique_lock/modifiers/1.cc: Likewise. * testsuite/30_threads/unique_lock/modifiers/2.cc: Likewise. * testsuite/30_threads/unique_lock/cons/1.cc: Likewise. * testsuite/30_threads/unique_lock/cons/2.cc: Likewise. * testsuite/30_threads/unique_lock/cons/3.cc: Likewise. * testsuite/30_threads/unique_lock/cons/4.cc: Likewise. * testsuite/30_threads/unique_lock/cons/5.cc: Likewise. * testsuite/30_threads/unique_lock/cons/6.cc: Likewise. * testsuite/30_threads/unique_lock/locking/1.cc: Likewise. * testsuite/30_threads/unique_lock/locking/2.cc: Likewise. * testsuite/30_threads/unique_lock/locking/3.cc: Likewise. * testsuite/30_threads/unique_lock/locking/4.cc: Likewise. From-SVN: r139943
2008-09-03 19:46:09 +02:00
}
};
re PR libstdc++/50196 ([C++0x] std::thread not available under macos) PR libstdc++/50196 * acinclude.m4 (GLIBCXX_HAS_GTHREADS): Don't depend on _POSIX_TIMEOUTS. * configure: Regenerate. * include/std/mutex (timed_mutex, recursive_timed_mutex): Define conditionally on GTHREADS_HAS_MUTEX_TIMEDLOCK. * testsuite/lib/libstdc++.exp (check_v3_target_gthreads_timed): Define. * testsuite/lib/dg-options.exp (dg-require-gthreads-timed): Define. * testsuite/30_threads/recursive_timed_mutex/dest/destructor_locked.cc: Use dg-require-gthreads-timed instead of dg-require-gthreads. * testsuite/30_threads/recursive_timed_mutex/native_handle/ typesizes.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_until/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_until/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/lock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/lock/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/3.cc: Likewise. * testsuite/30_threads/timed_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/timed_mutex/native_handle/typesizes.cc: Likewise. * testsuite/30_threads/timed_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_until/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_until/2.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/1.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/requirements/standard_layout.cc: Likewise. * testsuite/30_threads/timed_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/timed_mutex/lock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/2.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/3.cc: Likewise. * testsuite/30_threads/unique_lock/cons/5.cc: Likewise. * testsuite/30_threads/unique_lock/cons/6.cc: Likewise. * testsuite/30_threads/unique_lock/locking/3.cc: Likewise. * testsuite/30_threads/unique_lock/locking/4.cc: Likewise. From-SVN: r180329
2011-10-22 23:31:24 +02:00
#endif
condition_variable: New. 2008-05-06 Benjamin Kosnik <bkoz@redhat.com> * include/std/condition_variable: New. * include/std/mutex: New. * src/condition_variable.cc: New. * src/mutex.cc: New. * include/bits/functexcept.h: Add __throw_system_error varients. * src/functexcept.cc: Same. * config/abi/pre/gnu.ver: Add exports. * doc/xml/manual/using.xml: Add new includes. * doc/doxygen/user.cfg.in: Doxygen support. * doc/doxygen/doxygroups.cc: Same. * include/Makefile.am: Add mutex, condition_variable. * include/Makefile.in: Regenerated. * src/Makefile.am: Add mutex.cc, condition_variable.cc. * src/Makefile.in: Regenerated. * testsuite/30_threads: New. * testsuite/30_threads/lock_error: New. * testsuite/30_threads/mutex: New. * testsuite/30_threads/mutex/dest: New. * testsuite/30_threads/mutex/dest/destructor_locked.cc: New. * testsuite/30_threads/mutex/native_handle: New. * testsuite/30_threads/mutex/native_handle/1.cc: New. * testsuite/30_threads/mutex/cons: New. * testsuite/30_threads/mutex/cons/assign_neg.cc: New. * testsuite/30_threads/mutex/cons/1.cc: New. * testsuite/30_threads/mutex/cons/copy_neg.cc: New. * testsuite/30_threads/mutex/requirements: New. * testsuite/30_threads/mutex/requirements/typedefs.cc: New. * testsuite/30_threads/mutex/try_lock: New. * testsuite/30_threads/mutex/try_lock/1.cc: New. * testsuite/30_threads/mutex/try_lock/2.cc: New. * testsuite/30_threads/mutex/lock: New. * testsuite/30_threads/mutex/lock/1.cc: New. * testsuite/30_threads/mutex/unlock: New. * testsuite/30_threads/mutex/unlock/1.cc: New. * testsuite/30_threads/recursive_mutex: New. * testsuite/30_threads/recursive_mutex/dest: New. * testsuite/30_threads/recursive_mutex/dest/destructor_locked.cc: New. * testsuite/30_threads/recursive_mutex/native_handle: New. * testsuite/30_threads/recursive_mutex/native_handle/1.cc: New. * testsuite/30_threads/recursive_mutex/cons: New. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: New. * testsuite/30_threads/recursive_mutex/cons/1.cc: New. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: New. * testsuite/30_threads/recursive_mutex/requirements: New. * testsuite/30_threads/recursive_mutex/requirements/typedefs.cc: New. * testsuite/30_threads/lock_guard: New. * testsuite/30_threads/lock_guard/requirements: New. * testsuite/30_threads/lock_guard/requirements/typedefs.cc: New. * testsuite/30_threads/lock_guard/requirements/ explicit_instantiation.cc: New. * testsuite/30_threads/headers: New. * testsuite/30_threads/headers/mutex: New. * testsuite/30_threads/headers/mutex/types_std_c++0x.cc: New. * testsuite/30_threads/headers/mutex/std_c++0x_neg.cc: New. * testsuite/30_threads/headers/condition_variable: New. * testsuite/30_threads/headers/condition_variable/ types_std_c++0x.cc: New. * testsuite/30_threads/headers/condition_variable/std_c++0x_neg.cc: New. * testsuite/30_threads/once_flag: New. * testsuite/30_threads/unique_lock: New. * testsuite/30_threads/unique_lock/requirements: New. * testsuite/30_threads/unique_lock/requirements/typedefs.cc: New. * testsuite/30_threads/unique_lock/requirements/ explicit_instantiation.cc: New. * testsuite/17_intro/headers/c++200x/all.cc: Add new includes. From-SVN: r135007
2008-05-06 23:11:47 +02:00
/// Do not acquire ownership of the mutex.
struct defer_lock_t { };
/// Try to acquire ownership of the mutex without blocking.
struct try_to_lock_t { };
/// Assume the calling thread has already obtained mutex ownership
/// and manage it.
struct adopt_lock_t { };
libstdc++: N3126 draft support. * include/std/chrono: Extend constexpr application. * testsuite/util/testsuite_common_types.h (constexpr_default_constructible, constexpr_single_value_constructible) : Add comments about implied constraints. * testsuite/20_util/duration/cons/constexpr.cc: Activate all tests. * testsuite/20_util/time_point/cons/constexpr.cc: Same. * testsuite/20_util/time_point/requirements/constexpr_functions.cc: Same. * testsuite/20_util/ratio/cons/cons_overflow_neg.cc: Adjust line numbers. * testsuite/20_util/time_point_cast/constexpr.cc: New. * include/std/bitset: Use __SIZEOF_* macros to re-create original logic instead of slipshod application of std::numeric_limits<T>::max() macros. * testsuite/util/testsuite_common_types.h (constexpr_default_constructible): Modify. * include/std/chrono: Tested constexpr. * testsuite/20_util/duration_cast/constexpr.cc: New. * testsuite/20_util/time_point/cons/constexpr.cc: New. * testsuite/20_util/duration/cons/constexpr.cc: Add single_value tests. * testsuite/20_util/duration/requirements/typedefs_neg1.cc: Adjust line numbers. * testsuite/20_util/duration/requirements/typedefs_neg2.cc: Same. * testsuite/20_util/duration/requirements/typedefs_neg3.cc: Same. * testsuite/20_util/time_point/cons/constexpr.cc: Add single_value tests. * testsuite/20_util/time_point/requirements/constexpr_functions.cc: Add. * testsuite/util/testsuite_common_types.h: Adjust init. * include/std/chrono (duration): Remove defaulted constructor, replace with mem-init list. * testsuite/20_util/duration/cons/constexpr.cc: Add single value. * testsuite/20_util/duration/requirements/constexpr_functions.cc: Add non-static member functions. * testsuite/20_util/default_delete/cons/constexpr.cc: New, xfail. * testsuite/20_util/enable_shared_from_this/cons/constexpr.cc: Same. * testsuite/20_util/shared_ptr/cons/constexpr.cc: Same. * testsuite/20_util/time_point/requirements/constexpr_functions.cc: Same. * testsuite/20_util/unique_ptr/cons/constexpr.cc: Same. * testsuite/20_util/weak_ptr/cons/constexpr.cc: Same. * include/std/bitset: Add constexpr as per N3126 draft. * testsuite/23_containers/bitset/cons/constexpr.cc: New. * testsuite/23_containers/bitset/requirements/constexpr_functions.cc: New. * testsuite/util/testsuite_common_types.h: Reset condition. * include/bits/random.h: Remove misleading comments. * include/bits/regex.h: Add constexpr. * testsuite/28_regex/05_constants/syntax_option_type.cc: Add tests. * testsuite/28_regex/08_basic_regex/requirements/constexpr_data.cc: New. PR libstdc++/46134 * include/std/chrono: Use default constructor. * testsuite/util/testsuite_common_types.h (constexpr_default_constructible): Adjust condition. PR libstdc++/46133 * include/std/complex: Adjust complex specialization default constructors for constexpr. * testsuite/26_numerics/complex/cons/constexpr.cc: Enable tests. * include/bits/random.h: Adjust for constexpr as per N3126 draft. * testsuite/26_numerics/random/discard_block_engine/requirements/ constexpr_data.cc: New. * testsuite/26_numerics/random/discard_block_engine/requirements/ constexpr_functions.cc: New. * testsuite/26_numerics/random/independent_bits_engine/requirements/ constexpr_functions.cc: New. * testsuite/26_numerics/random/linear_congruential_engine/requirements/ constexpr_data.cc: New. * testsuite/26_numerics/random/linear_congruential_engine/requirements/ constexpr_functions.cc: New. * testsuite/26_numerics/random/mersenne_twister_engine/requirements/ constexpr_data.cc: New. * testsuite/26_numerics/random/mersenne_twister_engine/requirements/ constexpr_functions.cc: New. * testsuite/26_numerics/random/shuffle_order_engine/requirements/ constexpr_data.cc: New. * testsuite/26_numerics/random/shuffle_order_engine/requirements/ constexpr_functions.cc: New. * testsuite/26_numerics/random/subtract_with_carry_engine/requirements/ constexpr_data.cc: New. * testsuite/26_numerics/random/subtract_with_carry_engine/requirements/ constexpr_functions.cc: New. * include/bits/stream_iterator.h: Add constexpr as per N3126 draft. * include/bits/streambuf_iterator.h: Same. * include/std/complex: Same. * testsuite/24_iterators/istream_iterator/cons/constexpr.cc: New. * testsuite/24_iterators/istreambuf_iterator/cons/constexpr.cc: New. * testsuite/26_numerics/complex/cons/constexpr.cc: New. * testsuite/26_numerics/complex/requirements/constexpr_functions.cc: New. * include/bits/char_traits.h: Add constexpr as per N3126 draft. * testsuite/21_strings/char_traits/requirements/constexpr_functions.cc: New. * include/tr1_impl/array: Add constexpr as per N3126 draft. * testsuite/23_containers/array/requirements/ constexpr_functions.cc: New. * include/bits/shared_ptr.h: Revert changes. * include/bits/unique_ptr.h: Same. * include/std/chrono: Adjust. * include/tr1_impl/type_traits: Same. * testsuite/util/testsuite_common_types.h: Add test functors. * testsuite/20_util/duration/cons/constexpr.cc: New. * testsuite/20_util/duration/requirements/constexpr_functions.cc: Same. * testsuite/20_util/pair/cons/constexpr.cc: Same. * testsuite/20_util/ratio/requirements/constexpr_data.cc: Same. * testsuite/27_io/ios_base/types/fmtflags/constexpr_operators.cc: Same. * testsuite/27_io/ios_base/types/iostate/constexpr_operators.cc: Same. * testsuite/27_io/ios_base/types/openmode/constexpr_operators.cc: Same. * testsuite/30_threads/call_once/constexpr.cc: Same. * testsuite/30_threads/mutex/cons/constexpr.cc: Same. * testsuite/30_threads/once_flag/cons/constexpr.cc: Same. * testsuite/tr1/4_metaprogramming/integral_constant/requirements/ constexpr_data.cc: Same. * testsuite/29_atomics/atomic/cons/assign_neg.cc: Adjust line numbers. * testsuite/29_atomics/atomic/cons/copy_neg.cc: Same. * testsuite/29_atomics/atomic_integral/cons/assign_neg.cc: Same. * testsuite/29_atomics/atomic_integral/cons/copy_neg.cc: Same. * testsuite/29_atomics/atomic_integral/operators/bitwise_neg.cc: Same. * include/bits/allocator.h: Add constexpr as per N3126 draft. * include/bits/ios_base.h: Same. * include/bits/shared_ptr.h: Same. * include/bits/unique_ptr.h: Same. * include/bits/stl_iterator.h: Same. * include/bits/stl_pair.h: Same. * include/std/tuple: Same. * include/tr1_impl/type_traits: Same. * include/std/chrono: Same. * include/std/ratio: Same. * include/std/mutex: Same. * src/mutex.cc: Same. * testsuite/20_util/duration/requirements/typedefs_neg1.cc: Adjust. * testsuite/20_util/duration/requirements/typedefs_neg2.cc: Same. * testsuite/20_util/duration/requirements/typedefs_neg3.cc: Same. * testsuite/20_util/weak_ptr/comparison/cmp_neg.cc: Same. * testsuite/27_io/ios_base/cons/assign_neg.cc: Same. * testsuite/27_io/ios_base/cons/copy_neg.cc: Same. * doc/doxygen/user.cfg.in: Replace _GLIBCXX_USE_CONSTEXPR, _GLIBCXX_CONSTEXPR for doxygen generation. * src/limits.cc: Undef. * testsuite/29_atomics/atomic/cons/constexpr.cc: Adjust. * testsuite/29_atomics/atomic_address/cons/constexpr.cc: Same. * testsuite/29_atomics/atomic_integral/cons/constexpr.cc: Same. * testsuite/29_atomics/atomic_integral/operators/bitwise_neg.c: Same. * testsuite/18_support/numeric_limits/constexpr.cc: To... * testsuite/18_support/numeric_limits/requirements/ constexpr_data.cc, constexpr_functions.cc: ...this * testsuite/util/testsuite_common_types.h (constexpr_single_value_constructible): Add. * testsuite/29_atomics/atomic/cons/constexpr.cc: Adjust name. * testsuite/29_atomics/atomic_integral/cons/constexpr.cc: Same. * testsuite/29_atomics/atomic_address/cons/constexpr.cc: New. * testsuite/18_support/numeric_limits/constexpr.cc: New. * testsuite/29_atomics/atomic/cons/assign_neg.cc: Adjust line numbers. * testsuite/29_atomics/atomic/cons/constexpr.cc: Same. * testsuite/29_atomics/atomic/cons/copy_neg.cc: Same. * testsuite/29_atomics/atomic_integral/cons/assign_neg.cc: Same. * testsuite/29_atomics/atomic_integral/cons/constexpr.cc: Same. * testsuite/29_atomics/atomic_integral/cons/copy_neg.cc: Same. * testsuite/29_atomics/atomic_integral/operators/bitwise_neg.cc: Same. * testsuite/29_atomics/atomic_integral/operators/decrement_neg.cc: Same. * testsuite/29_atomics/atomic_integral/operators/increment_neg.cc: Same. * include/bits/c++config (_GLIBCXX_CONSTEXPR): Add. (_GLIBCXX_USE_CONSTEXPR): Add. * include/std/limits: Use it. * src/limits.cc: Adjust. * testsuite/ext/profile/mutex_extensions.cc: Change line number. * include/bits/atomic_0.h: Rework for N3126 draft, add constexpr. * include/bits/atomic_2.h: Same. * include/bits/atomic_base.h: Same. * include/std/atomic: Same. * src/atomic.cc: Same. * include/bits/atomicfwd_c.h: Remove. * include/bits/atomicfwd_cxx.h: Remove. * include/c_compatibility/stdatomic.h: Remove. * include/Makefile.am: Remove atomicfwd_c.h, atomicfwd_cxx.h, stdatomic.h. * include/Makefile.in: Regenerate. * doc/xml/manual/using.xml: Update list of header files for changes. * testsuite/util/testsuite_common_types.h (constexpr_constructible): Add. * testsuite/29_atomics/atomic/cons/constexpr.cc: New. * testsuite/29_atomics/atomic_integral/cons/constexpr.cc: New. * testsuite/17_intro/headers/c++200x/stdc++.cc: Modify. * testsuite/29_atomics/atomic/cons/assign_neg.cc: Same. * testsuite/29_atomics/atomic_address/cons/assign_neg.cc: Same. * testsuite/29_atomics/atomic_flag/cons/1.cc: Same. * testsuite/29_atomics/atomic_integral/cons/assign_neg.cc: Same. * testsuite/29_atomics/headers/atomic/macros.cc: Same. * testsuite/29_atomics/headers/atomic/types_std_c++0x.cc: Same. * testsuite/29_atomics/headers/atomic/types_std_c++0x_neg.cc: Same. * testsuite/29_atomics/atomic_flag/test_and_set/implicit.c: Remove. * testsuite/29_atomics/atomic_flag/test_and_set/explicit.c: Same. * testsuite/29_atomics/atomic_flag/clear/1.c: Same. * testsuite/29_atomics/headers/stdatomic.h/debug_mode.c: Same. * testsuite/29_atomics/headers/stdatomic.h/functions.c: Same. * testsuite/29_atomics/headers/stdatomic.h/macros.c: Same. * testsuite/29_atomics/headers/stdatomic.h/types.c: Same. * testsuite/util/testsuite_abi.cc: Add GLIBCXX_3.4.16. From-SVN: r166171
2010-11-02 03:35:28 +01:00
constexpr defer_lock_t defer_lock { };
constexpr try_to_lock_t try_to_lock { };
constexpr adopt_lock_t adopt_lock { };
condition_variable: New. 2008-05-06 Benjamin Kosnik <bkoz@redhat.com> * include/std/condition_variable: New. * include/std/mutex: New. * src/condition_variable.cc: New. * src/mutex.cc: New. * include/bits/functexcept.h: Add __throw_system_error varients. * src/functexcept.cc: Same. * config/abi/pre/gnu.ver: Add exports. * doc/xml/manual/using.xml: Add new includes. * doc/doxygen/user.cfg.in: Doxygen support. * doc/doxygen/doxygroups.cc: Same. * include/Makefile.am: Add mutex, condition_variable. * include/Makefile.in: Regenerated. * src/Makefile.am: Add mutex.cc, condition_variable.cc. * src/Makefile.in: Regenerated. * testsuite/30_threads: New. * testsuite/30_threads/lock_error: New. * testsuite/30_threads/mutex: New. * testsuite/30_threads/mutex/dest: New. * testsuite/30_threads/mutex/dest/destructor_locked.cc: New. * testsuite/30_threads/mutex/native_handle: New. * testsuite/30_threads/mutex/native_handle/1.cc: New. * testsuite/30_threads/mutex/cons: New. * testsuite/30_threads/mutex/cons/assign_neg.cc: New. * testsuite/30_threads/mutex/cons/1.cc: New. * testsuite/30_threads/mutex/cons/copy_neg.cc: New. * testsuite/30_threads/mutex/requirements: New. * testsuite/30_threads/mutex/requirements/typedefs.cc: New. * testsuite/30_threads/mutex/try_lock: New. * testsuite/30_threads/mutex/try_lock/1.cc: New. * testsuite/30_threads/mutex/try_lock/2.cc: New. * testsuite/30_threads/mutex/lock: New. * testsuite/30_threads/mutex/lock/1.cc: New. * testsuite/30_threads/mutex/unlock: New. * testsuite/30_threads/mutex/unlock/1.cc: New. * testsuite/30_threads/recursive_mutex: New. * testsuite/30_threads/recursive_mutex/dest: New. * testsuite/30_threads/recursive_mutex/dest/destructor_locked.cc: New. * testsuite/30_threads/recursive_mutex/native_handle: New. * testsuite/30_threads/recursive_mutex/native_handle/1.cc: New. * testsuite/30_threads/recursive_mutex/cons: New. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: New. * testsuite/30_threads/recursive_mutex/cons/1.cc: New. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: New. * testsuite/30_threads/recursive_mutex/requirements: New. * testsuite/30_threads/recursive_mutex/requirements/typedefs.cc: New. * testsuite/30_threads/lock_guard: New. * testsuite/30_threads/lock_guard/requirements: New. * testsuite/30_threads/lock_guard/requirements/typedefs.cc: New. * testsuite/30_threads/lock_guard/requirements/ explicit_instantiation.cc: New. * testsuite/30_threads/headers: New. * testsuite/30_threads/headers/mutex: New. * testsuite/30_threads/headers/mutex/types_std_c++0x.cc: New. * testsuite/30_threads/headers/mutex/std_c++0x_neg.cc: New. * testsuite/30_threads/headers/condition_variable: New. * testsuite/30_threads/headers/condition_variable/ types_std_c++0x.cc: New. * testsuite/30_threads/headers/condition_variable/std_c++0x_neg.cc: New. * testsuite/30_threads/once_flag: New. * testsuite/30_threads/unique_lock: New. * testsuite/30_threads/unique_lock/requirements: New. * testsuite/30_threads/unique_lock/requirements/typedefs.cc: New. * testsuite/30_threads/unique_lock/requirements/ explicit_instantiation.cc: New. * testsuite/17_intro/headers/c++200x/all.cc: Add new includes. From-SVN: r135007
2008-05-06 23:11:47 +02:00
/// @brief Scoped lock idiom.
// Acquire the mutex here with a constructor call, then release with
// the destructor call in accordance with RAII style.
template<typename _Mutex>
condition_variable: New. 2008-05-06 Benjamin Kosnik <bkoz@redhat.com> * include/std/condition_variable: New. * include/std/mutex: New. * src/condition_variable.cc: New. * src/mutex.cc: New. * include/bits/functexcept.h: Add __throw_system_error varients. * src/functexcept.cc: Same. * config/abi/pre/gnu.ver: Add exports. * doc/xml/manual/using.xml: Add new includes. * doc/doxygen/user.cfg.in: Doxygen support. * doc/doxygen/doxygroups.cc: Same. * include/Makefile.am: Add mutex, condition_variable. * include/Makefile.in: Regenerated. * src/Makefile.am: Add mutex.cc, condition_variable.cc. * src/Makefile.in: Regenerated. * testsuite/30_threads: New. * testsuite/30_threads/lock_error: New. * testsuite/30_threads/mutex: New. * testsuite/30_threads/mutex/dest: New. * testsuite/30_threads/mutex/dest/destructor_locked.cc: New. * testsuite/30_threads/mutex/native_handle: New. * testsuite/30_threads/mutex/native_handle/1.cc: New. * testsuite/30_threads/mutex/cons: New. * testsuite/30_threads/mutex/cons/assign_neg.cc: New. * testsuite/30_threads/mutex/cons/1.cc: New. * testsuite/30_threads/mutex/cons/copy_neg.cc: New. * testsuite/30_threads/mutex/requirements: New. * testsuite/30_threads/mutex/requirements/typedefs.cc: New. * testsuite/30_threads/mutex/try_lock: New. * testsuite/30_threads/mutex/try_lock/1.cc: New. * testsuite/30_threads/mutex/try_lock/2.cc: New. * testsuite/30_threads/mutex/lock: New. * testsuite/30_threads/mutex/lock/1.cc: New. * testsuite/30_threads/mutex/unlock: New. * testsuite/30_threads/mutex/unlock/1.cc: New. * testsuite/30_threads/recursive_mutex: New. * testsuite/30_threads/recursive_mutex/dest: New. * testsuite/30_threads/recursive_mutex/dest/destructor_locked.cc: New. * testsuite/30_threads/recursive_mutex/native_handle: New. * testsuite/30_threads/recursive_mutex/native_handle/1.cc: New. * testsuite/30_threads/recursive_mutex/cons: New. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: New. * testsuite/30_threads/recursive_mutex/cons/1.cc: New. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: New. * testsuite/30_threads/recursive_mutex/requirements: New. * testsuite/30_threads/recursive_mutex/requirements/typedefs.cc: New. * testsuite/30_threads/lock_guard: New. * testsuite/30_threads/lock_guard/requirements: New. * testsuite/30_threads/lock_guard/requirements/typedefs.cc: New. * testsuite/30_threads/lock_guard/requirements/ explicit_instantiation.cc: New. * testsuite/30_threads/headers: New. * testsuite/30_threads/headers/mutex: New. * testsuite/30_threads/headers/mutex/types_std_c++0x.cc: New. * testsuite/30_threads/headers/mutex/std_c++0x_neg.cc: New. * testsuite/30_threads/headers/condition_variable: New. * testsuite/30_threads/headers/condition_variable/ types_std_c++0x.cc: New. * testsuite/30_threads/headers/condition_variable/std_c++0x_neg.cc: New. * testsuite/30_threads/once_flag: New. * testsuite/30_threads/unique_lock: New. * testsuite/30_threads/unique_lock/requirements: New. * testsuite/30_threads/unique_lock/requirements/typedefs.cc: New. * testsuite/30_threads/unique_lock/requirements/ explicit_instantiation.cc: New. * testsuite/17_intro/headers/c++200x/all.cc: Add new includes. From-SVN: r135007
2008-05-06 23:11:47 +02:00
class lock_guard
{
public:
typedef _Mutex mutex_type;
explicit lock_guard(mutex_type& __m) : _M_device(__m)
{ _M_device.lock(); }
lock_guard(mutex_type& __m, adopt_lock_t) : _M_device(__m)
{ } // calling thread owns mutex
condition_variable: New. 2008-05-06 Benjamin Kosnik <bkoz@redhat.com> * include/std/condition_variable: New. * include/std/mutex: New. * src/condition_variable.cc: New. * src/mutex.cc: New. * include/bits/functexcept.h: Add __throw_system_error varients. * src/functexcept.cc: Same. * config/abi/pre/gnu.ver: Add exports. * doc/xml/manual/using.xml: Add new includes. * doc/doxygen/user.cfg.in: Doxygen support. * doc/doxygen/doxygroups.cc: Same. * include/Makefile.am: Add mutex, condition_variable. * include/Makefile.in: Regenerated. * src/Makefile.am: Add mutex.cc, condition_variable.cc. * src/Makefile.in: Regenerated. * testsuite/30_threads: New. * testsuite/30_threads/lock_error: New. * testsuite/30_threads/mutex: New. * testsuite/30_threads/mutex/dest: New. * testsuite/30_threads/mutex/dest/destructor_locked.cc: New. * testsuite/30_threads/mutex/native_handle: New. * testsuite/30_threads/mutex/native_handle/1.cc: New. * testsuite/30_threads/mutex/cons: New. * testsuite/30_threads/mutex/cons/assign_neg.cc: New. * testsuite/30_threads/mutex/cons/1.cc: New. * testsuite/30_threads/mutex/cons/copy_neg.cc: New. * testsuite/30_threads/mutex/requirements: New. * testsuite/30_threads/mutex/requirements/typedefs.cc: New. * testsuite/30_threads/mutex/try_lock: New. * testsuite/30_threads/mutex/try_lock/1.cc: New. * testsuite/30_threads/mutex/try_lock/2.cc: New. * testsuite/30_threads/mutex/lock: New. * testsuite/30_threads/mutex/lock/1.cc: New. * testsuite/30_threads/mutex/unlock: New. * testsuite/30_threads/mutex/unlock/1.cc: New. * testsuite/30_threads/recursive_mutex: New. * testsuite/30_threads/recursive_mutex/dest: New. * testsuite/30_threads/recursive_mutex/dest/destructor_locked.cc: New. * testsuite/30_threads/recursive_mutex/native_handle: New. * testsuite/30_threads/recursive_mutex/native_handle/1.cc: New. * testsuite/30_threads/recursive_mutex/cons: New. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: New. * testsuite/30_threads/recursive_mutex/cons/1.cc: New. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: New. * testsuite/30_threads/recursive_mutex/requirements: New. * testsuite/30_threads/recursive_mutex/requirements/typedefs.cc: New. * testsuite/30_threads/lock_guard: New. * testsuite/30_threads/lock_guard/requirements: New. * testsuite/30_threads/lock_guard/requirements/typedefs.cc: New. * testsuite/30_threads/lock_guard/requirements/ explicit_instantiation.cc: New. * testsuite/30_threads/headers: New. * testsuite/30_threads/headers/mutex: New. * testsuite/30_threads/headers/mutex/types_std_c++0x.cc: New. * testsuite/30_threads/headers/mutex/std_c++0x_neg.cc: New. * testsuite/30_threads/headers/condition_variable: New. * testsuite/30_threads/headers/condition_variable/ types_std_c++0x.cc: New. * testsuite/30_threads/headers/condition_variable/std_c++0x_neg.cc: New. * testsuite/30_threads/once_flag: New. * testsuite/30_threads/unique_lock: New. * testsuite/30_threads/unique_lock/requirements: New. * testsuite/30_threads/unique_lock/requirements/typedefs.cc: New. * testsuite/30_threads/unique_lock/requirements/ explicit_instantiation.cc: New. * testsuite/17_intro/headers/c++200x/all.cc: Add new includes. From-SVN: r135007
2008-05-06 23:11:47 +02:00
~lock_guard()
{ _M_device.unlock(); }
condition_variable: Use new deleted ctors. 2008-09-03 Chris Fairles <chris.fairles@gmail.com> * include/std/condition_variable: Use new deleted ctors. * include/std/mutex: Likewise plus implement timed_mutex, recursive_timed_mutex and call_once. * src/condition_variable.cc: Implement wait(). Use gthread types. Remove _GTHREADS_HAS_COND checks in favor of global _GLIBCXX_HAS_GTHREADS. * src/mutex.cc (call_once): Implementation using TLS with mutex fallback. * config/abi/pre/gnu.ver: Add exported symbols. * testsuite/lib/libstdc++.exp (check_v3_target_gthreads): New. * testsuite/lib/dg-options.exp (dg-require-gthreads): Likewise. * testsuite/30_threads/lock_guard/requirements/typedefs.cc: Use dg-require-gthreads and dg-require-cstdint. * testsuite/30_threads/lock_guard/requirements/ explicit_instantiation.cc: Likewise. * testsuite/30_threads/mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/mutex/cons/1.cc: Likewise. * testsuite/30_threads/mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/mutex/lock/1.cc: Likewise. * testsuite/30_threads/mutex/unlock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/recursive_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/recursive_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/recursive_mutex/lock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/unique_lock/requirements/ explicit_instantiation.cc: Likewise. * testsuite/30_threads/unique_lock/requirements/typedefs.cc: Likewise. * testsuite/30_threads/mutex/cons/assign_neg.cc: Also adjust dg-error lines for deleted members. * testsuite/30_threads/mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/call_once/once_flag.cc: New. * testsuite/30_threads/call_once/call_once1.cc: Likewise. * testsuite/30_threads/condition_variable/cons/1.cc: Likewise. * testsuite/30_threads/condition_variable/cons/copy_neg.cc: Likewise * testsuite/30_threads/condition_variable/cons/assign_neg.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/1.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/copy_neg.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/assign_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/timed_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_until/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_until/2.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/1.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/timed_mutex/lock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/2.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/3.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_until/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_until/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/lock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/lock/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/3.cc: Likewise. * testsuite/30_threads/unique_lock/modifiers/1.cc: Likewise. * testsuite/30_threads/unique_lock/modifiers/2.cc: Likewise. * testsuite/30_threads/unique_lock/cons/1.cc: Likewise. * testsuite/30_threads/unique_lock/cons/2.cc: Likewise. * testsuite/30_threads/unique_lock/cons/3.cc: Likewise. * testsuite/30_threads/unique_lock/cons/4.cc: Likewise. * testsuite/30_threads/unique_lock/cons/5.cc: Likewise. * testsuite/30_threads/unique_lock/cons/6.cc: Likewise. * testsuite/30_threads/unique_lock/locking/1.cc: Likewise. * testsuite/30_threads/unique_lock/locking/2.cc: Likewise. * testsuite/30_threads/unique_lock/locking/3.cc: Likewise. * testsuite/30_threads/unique_lock/locking/4.cc: Likewise. From-SVN: r139943
2008-09-03 19:46:09 +02:00
lock_guard(const lock_guard&) = delete;
lock_guard& operator=(const lock_guard&) = delete;
condition_variable: New. 2008-05-06 Benjamin Kosnik <bkoz@redhat.com> * include/std/condition_variable: New. * include/std/mutex: New. * src/condition_variable.cc: New. * src/mutex.cc: New. * include/bits/functexcept.h: Add __throw_system_error varients. * src/functexcept.cc: Same. * config/abi/pre/gnu.ver: Add exports. * doc/xml/manual/using.xml: Add new includes. * doc/doxygen/user.cfg.in: Doxygen support. * doc/doxygen/doxygroups.cc: Same. * include/Makefile.am: Add mutex, condition_variable. * include/Makefile.in: Regenerated. * src/Makefile.am: Add mutex.cc, condition_variable.cc. * src/Makefile.in: Regenerated. * testsuite/30_threads: New. * testsuite/30_threads/lock_error: New. * testsuite/30_threads/mutex: New. * testsuite/30_threads/mutex/dest: New. * testsuite/30_threads/mutex/dest/destructor_locked.cc: New. * testsuite/30_threads/mutex/native_handle: New. * testsuite/30_threads/mutex/native_handle/1.cc: New. * testsuite/30_threads/mutex/cons: New. * testsuite/30_threads/mutex/cons/assign_neg.cc: New. * testsuite/30_threads/mutex/cons/1.cc: New. * testsuite/30_threads/mutex/cons/copy_neg.cc: New. * testsuite/30_threads/mutex/requirements: New. * testsuite/30_threads/mutex/requirements/typedefs.cc: New. * testsuite/30_threads/mutex/try_lock: New. * testsuite/30_threads/mutex/try_lock/1.cc: New. * testsuite/30_threads/mutex/try_lock/2.cc: New. * testsuite/30_threads/mutex/lock: New. * testsuite/30_threads/mutex/lock/1.cc: New. * testsuite/30_threads/mutex/unlock: New. * testsuite/30_threads/mutex/unlock/1.cc: New. * testsuite/30_threads/recursive_mutex: New. * testsuite/30_threads/recursive_mutex/dest: New. * testsuite/30_threads/recursive_mutex/dest/destructor_locked.cc: New. * testsuite/30_threads/recursive_mutex/native_handle: New. * testsuite/30_threads/recursive_mutex/native_handle/1.cc: New. * testsuite/30_threads/recursive_mutex/cons: New. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: New. * testsuite/30_threads/recursive_mutex/cons/1.cc: New. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: New. * testsuite/30_threads/recursive_mutex/requirements: New. * testsuite/30_threads/recursive_mutex/requirements/typedefs.cc: New. * testsuite/30_threads/lock_guard: New. * testsuite/30_threads/lock_guard/requirements: New. * testsuite/30_threads/lock_guard/requirements/typedefs.cc: New. * testsuite/30_threads/lock_guard/requirements/ explicit_instantiation.cc: New. * testsuite/30_threads/headers: New. * testsuite/30_threads/headers/mutex: New. * testsuite/30_threads/headers/mutex/types_std_c++0x.cc: New. * testsuite/30_threads/headers/mutex/std_c++0x_neg.cc: New. * testsuite/30_threads/headers/condition_variable: New. * testsuite/30_threads/headers/condition_variable/ types_std_c++0x.cc: New. * testsuite/30_threads/headers/condition_variable/std_c++0x_neg.cc: New. * testsuite/30_threads/once_flag: New. * testsuite/30_threads/unique_lock: New. * testsuite/30_threads/unique_lock/requirements: New. * testsuite/30_threads/unique_lock/requirements/typedefs.cc: New. * testsuite/30_threads/unique_lock/requirements/ explicit_instantiation.cc: New. * testsuite/17_intro/headers/c++200x/all.cc: Add new includes. From-SVN: r135007
2008-05-06 23:11:47 +02:00
private:
mutex_type& _M_device;
};
/// unique_lock
template<typename _Mutex>
condition_variable: New. 2008-05-06 Benjamin Kosnik <bkoz@redhat.com> * include/std/condition_variable: New. * include/std/mutex: New. * src/condition_variable.cc: New. * src/mutex.cc: New. * include/bits/functexcept.h: Add __throw_system_error varients. * src/functexcept.cc: Same. * config/abi/pre/gnu.ver: Add exports. * doc/xml/manual/using.xml: Add new includes. * doc/doxygen/user.cfg.in: Doxygen support. * doc/doxygen/doxygroups.cc: Same. * include/Makefile.am: Add mutex, condition_variable. * include/Makefile.in: Regenerated. * src/Makefile.am: Add mutex.cc, condition_variable.cc. * src/Makefile.in: Regenerated. * testsuite/30_threads: New. * testsuite/30_threads/lock_error: New. * testsuite/30_threads/mutex: New. * testsuite/30_threads/mutex/dest: New. * testsuite/30_threads/mutex/dest/destructor_locked.cc: New. * testsuite/30_threads/mutex/native_handle: New. * testsuite/30_threads/mutex/native_handle/1.cc: New. * testsuite/30_threads/mutex/cons: New. * testsuite/30_threads/mutex/cons/assign_neg.cc: New. * testsuite/30_threads/mutex/cons/1.cc: New. * testsuite/30_threads/mutex/cons/copy_neg.cc: New. * testsuite/30_threads/mutex/requirements: New. * testsuite/30_threads/mutex/requirements/typedefs.cc: New. * testsuite/30_threads/mutex/try_lock: New. * testsuite/30_threads/mutex/try_lock/1.cc: New. * testsuite/30_threads/mutex/try_lock/2.cc: New. * testsuite/30_threads/mutex/lock: New. * testsuite/30_threads/mutex/lock/1.cc: New. * testsuite/30_threads/mutex/unlock: New. * testsuite/30_threads/mutex/unlock/1.cc: New. * testsuite/30_threads/recursive_mutex: New. * testsuite/30_threads/recursive_mutex/dest: New. * testsuite/30_threads/recursive_mutex/dest/destructor_locked.cc: New. * testsuite/30_threads/recursive_mutex/native_handle: New. * testsuite/30_threads/recursive_mutex/native_handle/1.cc: New. * testsuite/30_threads/recursive_mutex/cons: New. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: New. * testsuite/30_threads/recursive_mutex/cons/1.cc: New. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: New. * testsuite/30_threads/recursive_mutex/requirements: New. * testsuite/30_threads/recursive_mutex/requirements/typedefs.cc: New. * testsuite/30_threads/lock_guard: New. * testsuite/30_threads/lock_guard/requirements: New. * testsuite/30_threads/lock_guard/requirements/typedefs.cc: New. * testsuite/30_threads/lock_guard/requirements/ explicit_instantiation.cc: New. * testsuite/30_threads/headers: New. * testsuite/30_threads/headers/mutex: New. * testsuite/30_threads/headers/mutex/types_std_c++0x.cc: New. * testsuite/30_threads/headers/mutex/std_c++0x_neg.cc: New. * testsuite/30_threads/headers/condition_variable: New. * testsuite/30_threads/headers/condition_variable/ types_std_c++0x.cc: New. * testsuite/30_threads/headers/condition_variable/std_c++0x_neg.cc: New. * testsuite/30_threads/once_flag: New. * testsuite/30_threads/unique_lock: New. * testsuite/30_threads/unique_lock/requirements: New. * testsuite/30_threads/unique_lock/requirements/typedefs.cc: New. * testsuite/30_threads/unique_lock/requirements/ explicit_instantiation.cc: New. * testsuite/17_intro/headers/c++200x/all.cc: Add new includes. From-SVN: r135007
2008-05-06 23:11:47 +02:00
class unique_lock
{
public:
typedef _Mutex mutex_type;
condition_variable (condition_variable): Remove _M_internal_mutex. 2009-02-09 Benjamin Kosnik <bkoz@redhat.com> * include/std/condition_variable (condition_variable): Remove _M_internal_mutex. Add private __native_type typedef. * src/condition_variable.cc (condition_variable::notify_one): Remove _M_internal_mutex use. Use typedef. (condition_variable::notify_all): Same. * include/std/mutex (mutex): Add private __native_type typedef. Use it. (recursive_mutex): Same. (timed_mutex): Same. (recursive_timed_mutex): Same. (once_flag): Make __native_type typedef private. * include/std/thread (this_thread): Add minimal markup. * testsuite/30_threads/condition_variable_any/cons/assign_neg.cc: Adjust line numbers. * testsuite/30_threads/condition_variable_any/cons/copy_neg.cc: Same. * testsuite/30_threads/mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/mutex/cons/copy_neg.cc: Same. * testsuite/30_threads/timed_mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/timed_mutex/cons/copy_neg.cc: Same. * testsuite/30_threads/thread/cons/assign_neg.cc: Same. * testsuite/30_threads/thread/cons/copy_neg.cc: Same. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: Same. * testsuite/30_threads/condition_variable/cons/assign_neg.cc: Same. * testsuite/30_threads/condition_variable/cons/copy_neg.cc: Same. * testsuite/30_threads/recursive_timed_mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/recursive_timed_mutex/cons/copy_neg.cc: Same. * testsuite/util/thread/all.h: Testsuite utilities for testing thread. * testsuite/30_threads/condition_variable_any/native_handle/ typesizes.cc: New. * testsuite/30_threads/mutex/native_handle/typesizes.cc: Same. * testsuite/30_threads/timed_mutex/native_handle/typesizes.cc: Same. * testsuite/30_threads/thread/native_handle/typesizes.cc: Same. * testsuite/30_threads/recursive_mutex/native_handle/typesizes.cc: Same. * testsuite/30_threads/condition_variable/native_handle/ typesizes.cc: Same. * testsuite/30_threads/recursive_timed_mutex/native_handle/ typesizes.cc: Same. From-SVN: r144053
2009-02-10 09:29:57 +01:00
unique_lock() noexcept
condition_variable: Use new deleted ctors. 2008-09-03 Chris Fairles <chris.fairles@gmail.com> * include/std/condition_variable: Use new deleted ctors. * include/std/mutex: Likewise plus implement timed_mutex, recursive_timed_mutex and call_once. * src/condition_variable.cc: Implement wait(). Use gthread types. Remove _GTHREADS_HAS_COND checks in favor of global _GLIBCXX_HAS_GTHREADS. * src/mutex.cc (call_once): Implementation using TLS with mutex fallback. * config/abi/pre/gnu.ver: Add exported symbols. * testsuite/lib/libstdc++.exp (check_v3_target_gthreads): New. * testsuite/lib/dg-options.exp (dg-require-gthreads): Likewise. * testsuite/30_threads/lock_guard/requirements/typedefs.cc: Use dg-require-gthreads and dg-require-cstdint. * testsuite/30_threads/lock_guard/requirements/ explicit_instantiation.cc: Likewise. * testsuite/30_threads/mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/mutex/cons/1.cc: Likewise. * testsuite/30_threads/mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/mutex/lock/1.cc: Likewise. * testsuite/30_threads/mutex/unlock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/recursive_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/recursive_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/recursive_mutex/lock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/unique_lock/requirements/ explicit_instantiation.cc: Likewise. * testsuite/30_threads/unique_lock/requirements/typedefs.cc: Likewise. * testsuite/30_threads/mutex/cons/assign_neg.cc: Also adjust dg-error lines for deleted members. * testsuite/30_threads/mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/call_once/once_flag.cc: New. * testsuite/30_threads/call_once/call_once1.cc: Likewise. * testsuite/30_threads/condition_variable/cons/1.cc: Likewise. * testsuite/30_threads/condition_variable/cons/copy_neg.cc: Likewise * testsuite/30_threads/condition_variable/cons/assign_neg.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/1.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/copy_neg.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/assign_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/timed_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_until/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_until/2.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/1.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/timed_mutex/lock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/2.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/3.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_until/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_until/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/lock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/lock/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/3.cc: Likewise. * testsuite/30_threads/unique_lock/modifiers/1.cc: Likewise. * testsuite/30_threads/unique_lock/modifiers/2.cc: Likewise. * testsuite/30_threads/unique_lock/cons/1.cc: Likewise. * testsuite/30_threads/unique_lock/cons/2.cc: Likewise. * testsuite/30_threads/unique_lock/cons/3.cc: Likewise. * testsuite/30_threads/unique_lock/cons/4.cc: Likewise. * testsuite/30_threads/unique_lock/cons/5.cc: Likewise. * testsuite/30_threads/unique_lock/cons/6.cc: Likewise. * testsuite/30_threads/unique_lock/locking/1.cc: Likewise. * testsuite/30_threads/unique_lock/locking/2.cc: Likewise. * testsuite/30_threads/unique_lock/locking/3.cc: Likewise. * testsuite/30_threads/unique_lock/locking/4.cc: Likewise. From-SVN: r139943
2008-09-03 19:46:09 +02:00
: _M_device(0), _M_owns(false)
{ }
condition_variable: New. 2008-05-06 Benjamin Kosnik <bkoz@redhat.com> * include/std/condition_variable: New. * include/std/mutex: New. * src/condition_variable.cc: New. * src/mutex.cc: New. * include/bits/functexcept.h: Add __throw_system_error varients. * src/functexcept.cc: Same. * config/abi/pre/gnu.ver: Add exports. * doc/xml/manual/using.xml: Add new includes. * doc/doxygen/user.cfg.in: Doxygen support. * doc/doxygen/doxygroups.cc: Same. * include/Makefile.am: Add mutex, condition_variable. * include/Makefile.in: Regenerated. * src/Makefile.am: Add mutex.cc, condition_variable.cc. * src/Makefile.in: Regenerated. * testsuite/30_threads: New. * testsuite/30_threads/lock_error: New. * testsuite/30_threads/mutex: New. * testsuite/30_threads/mutex/dest: New. * testsuite/30_threads/mutex/dest/destructor_locked.cc: New. * testsuite/30_threads/mutex/native_handle: New. * testsuite/30_threads/mutex/native_handle/1.cc: New. * testsuite/30_threads/mutex/cons: New. * testsuite/30_threads/mutex/cons/assign_neg.cc: New. * testsuite/30_threads/mutex/cons/1.cc: New. * testsuite/30_threads/mutex/cons/copy_neg.cc: New. * testsuite/30_threads/mutex/requirements: New. * testsuite/30_threads/mutex/requirements/typedefs.cc: New. * testsuite/30_threads/mutex/try_lock: New. * testsuite/30_threads/mutex/try_lock/1.cc: New. * testsuite/30_threads/mutex/try_lock/2.cc: New. * testsuite/30_threads/mutex/lock: New. * testsuite/30_threads/mutex/lock/1.cc: New. * testsuite/30_threads/mutex/unlock: New. * testsuite/30_threads/mutex/unlock/1.cc: New. * testsuite/30_threads/recursive_mutex: New. * testsuite/30_threads/recursive_mutex/dest: New. * testsuite/30_threads/recursive_mutex/dest/destructor_locked.cc: New. * testsuite/30_threads/recursive_mutex/native_handle: New. * testsuite/30_threads/recursive_mutex/native_handle/1.cc: New. * testsuite/30_threads/recursive_mutex/cons: New. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: New. * testsuite/30_threads/recursive_mutex/cons/1.cc: New. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: New. * testsuite/30_threads/recursive_mutex/requirements: New. * testsuite/30_threads/recursive_mutex/requirements/typedefs.cc: New. * testsuite/30_threads/lock_guard: New. * testsuite/30_threads/lock_guard/requirements: New. * testsuite/30_threads/lock_guard/requirements/typedefs.cc: New. * testsuite/30_threads/lock_guard/requirements/ explicit_instantiation.cc: New. * testsuite/30_threads/headers: New. * testsuite/30_threads/headers/mutex: New. * testsuite/30_threads/headers/mutex/types_std_c++0x.cc: New. * testsuite/30_threads/headers/mutex/std_c++0x_neg.cc: New. * testsuite/30_threads/headers/condition_variable: New. * testsuite/30_threads/headers/condition_variable/ types_std_c++0x.cc: New. * testsuite/30_threads/headers/condition_variable/std_c++0x_neg.cc: New. * testsuite/30_threads/once_flag: New. * testsuite/30_threads/unique_lock: New. * testsuite/30_threads/unique_lock/requirements: New. * testsuite/30_threads/unique_lock/requirements/typedefs.cc: New. * testsuite/30_threads/unique_lock/requirements/ explicit_instantiation.cc: New. * testsuite/17_intro/headers/c++200x/all.cc: Add new includes. From-SVN: r135007
2008-05-06 23:11:47 +02:00
explicit unique_lock(mutex_type& __m)
condition_variable: Use new deleted ctors. 2008-09-03 Chris Fairles <chris.fairles@gmail.com> * include/std/condition_variable: Use new deleted ctors. * include/std/mutex: Likewise plus implement timed_mutex, recursive_timed_mutex and call_once. * src/condition_variable.cc: Implement wait(). Use gthread types. Remove _GTHREADS_HAS_COND checks in favor of global _GLIBCXX_HAS_GTHREADS. * src/mutex.cc (call_once): Implementation using TLS with mutex fallback. * config/abi/pre/gnu.ver: Add exported symbols. * testsuite/lib/libstdc++.exp (check_v3_target_gthreads): New. * testsuite/lib/dg-options.exp (dg-require-gthreads): Likewise. * testsuite/30_threads/lock_guard/requirements/typedefs.cc: Use dg-require-gthreads and dg-require-cstdint. * testsuite/30_threads/lock_guard/requirements/ explicit_instantiation.cc: Likewise. * testsuite/30_threads/mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/mutex/cons/1.cc: Likewise. * testsuite/30_threads/mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/mutex/lock/1.cc: Likewise. * testsuite/30_threads/mutex/unlock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/recursive_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/recursive_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/recursive_mutex/lock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/unique_lock/requirements/ explicit_instantiation.cc: Likewise. * testsuite/30_threads/unique_lock/requirements/typedefs.cc: Likewise. * testsuite/30_threads/mutex/cons/assign_neg.cc: Also adjust dg-error lines for deleted members. * testsuite/30_threads/mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/call_once/once_flag.cc: New. * testsuite/30_threads/call_once/call_once1.cc: Likewise. * testsuite/30_threads/condition_variable/cons/1.cc: Likewise. * testsuite/30_threads/condition_variable/cons/copy_neg.cc: Likewise * testsuite/30_threads/condition_variable/cons/assign_neg.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/1.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/copy_neg.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/assign_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/timed_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_until/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_until/2.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/1.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/timed_mutex/lock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/2.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/3.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_until/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_until/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/lock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/lock/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/3.cc: Likewise. * testsuite/30_threads/unique_lock/modifiers/1.cc: Likewise. * testsuite/30_threads/unique_lock/modifiers/2.cc: Likewise. * testsuite/30_threads/unique_lock/cons/1.cc: Likewise. * testsuite/30_threads/unique_lock/cons/2.cc: Likewise. * testsuite/30_threads/unique_lock/cons/3.cc: Likewise. * testsuite/30_threads/unique_lock/cons/4.cc: Likewise. * testsuite/30_threads/unique_lock/cons/5.cc: Likewise. * testsuite/30_threads/unique_lock/cons/6.cc: Likewise. * testsuite/30_threads/unique_lock/locking/1.cc: Likewise. * testsuite/30_threads/unique_lock/locking/2.cc: Likewise. * testsuite/30_threads/unique_lock/locking/3.cc: Likewise. * testsuite/30_threads/unique_lock/locking/4.cc: Likewise. From-SVN: r139943
2008-09-03 19:46:09 +02:00
: _M_device(&__m), _M_owns(false)
{
lock();
condition_variable: New. 2008-05-06 Benjamin Kosnik <bkoz@redhat.com> * include/std/condition_variable: New. * include/std/mutex: New. * src/condition_variable.cc: New. * src/mutex.cc: New. * include/bits/functexcept.h: Add __throw_system_error varients. * src/functexcept.cc: Same. * config/abi/pre/gnu.ver: Add exports. * doc/xml/manual/using.xml: Add new includes. * doc/doxygen/user.cfg.in: Doxygen support. * doc/doxygen/doxygroups.cc: Same. * include/Makefile.am: Add mutex, condition_variable. * include/Makefile.in: Regenerated. * src/Makefile.am: Add mutex.cc, condition_variable.cc. * src/Makefile.in: Regenerated. * testsuite/30_threads: New. * testsuite/30_threads/lock_error: New. * testsuite/30_threads/mutex: New. * testsuite/30_threads/mutex/dest: New. * testsuite/30_threads/mutex/dest/destructor_locked.cc: New. * testsuite/30_threads/mutex/native_handle: New. * testsuite/30_threads/mutex/native_handle/1.cc: New. * testsuite/30_threads/mutex/cons: New. * testsuite/30_threads/mutex/cons/assign_neg.cc: New. * testsuite/30_threads/mutex/cons/1.cc: New. * testsuite/30_threads/mutex/cons/copy_neg.cc: New. * testsuite/30_threads/mutex/requirements: New. * testsuite/30_threads/mutex/requirements/typedefs.cc: New. * testsuite/30_threads/mutex/try_lock: New. * testsuite/30_threads/mutex/try_lock/1.cc: New. * testsuite/30_threads/mutex/try_lock/2.cc: New. * testsuite/30_threads/mutex/lock: New. * testsuite/30_threads/mutex/lock/1.cc: New. * testsuite/30_threads/mutex/unlock: New. * testsuite/30_threads/mutex/unlock/1.cc: New. * testsuite/30_threads/recursive_mutex: New. * testsuite/30_threads/recursive_mutex/dest: New. * testsuite/30_threads/recursive_mutex/dest/destructor_locked.cc: New. * testsuite/30_threads/recursive_mutex/native_handle: New. * testsuite/30_threads/recursive_mutex/native_handle/1.cc: New. * testsuite/30_threads/recursive_mutex/cons: New. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: New. * testsuite/30_threads/recursive_mutex/cons/1.cc: New. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: New. * testsuite/30_threads/recursive_mutex/requirements: New. * testsuite/30_threads/recursive_mutex/requirements/typedefs.cc: New. * testsuite/30_threads/lock_guard: New. * testsuite/30_threads/lock_guard/requirements: New. * testsuite/30_threads/lock_guard/requirements/typedefs.cc: New. * testsuite/30_threads/lock_guard/requirements/ explicit_instantiation.cc: New. * testsuite/30_threads/headers: New. * testsuite/30_threads/headers/mutex: New. * testsuite/30_threads/headers/mutex/types_std_c++0x.cc: New. * testsuite/30_threads/headers/mutex/std_c++0x_neg.cc: New. * testsuite/30_threads/headers/condition_variable: New. * testsuite/30_threads/headers/condition_variable/ types_std_c++0x.cc: New. * testsuite/30_threads/headers/condition_variable/std_c++0x_neg.cc: New. * testsuite/30_threads/once_flag: New. * testsuite/30_threads/unique_lock: New. * testsuite/30_threads/unique_lock/requirements: New. * testsuite/30_threads/unique_lock/requirements/typedefs.cc: New. * testsuite/30_threads/unique_lock/requirements/ explicit_instantiation.cc: New. * testsuite/17_intro/headers/c++200x/all.cc: Add new includes. From-SVN: r135007
2008-05-06 23:11:47 +02:00
_M_owns = true;
}
unique_lock(mutex_type& __m, defer_lock_t) noexcept
: _M_device(&__m), _M_owns(false)
{ }
condition_variable: New. 2008-05-06 Benjamin Kosnik <bkoz@redhat.com> * include/std/condition_variable: New. * include/std/mutex: New. * src/condition_variable.cc: New. * src/mutex.cc: New. * include/bits/functexcept.h: Add __throw_system_error varients. * src/functexcept.cc: Same. * config/abi/pre/gnu.ver: Add exports. * doc/xml/manual/using.xml: Add new includes. * doc/doxygen/user.cfg.in: Doxygen support. * doc/doxygen/doxygroups.cc: Same. * include/Makefile.am: Add mutex, condition_variable. * include/Makefile.in: Regenerated. * src/Makefile.am: Add mutex.cc, condition_variable.cc. * src/Makefile.in: Regenerated. * testsuite/30_threads: New. * testsuite/30_threads/lock_error: New. * testsuite/30_threads/mutex: New. * testsuite/30_threads/mutex/dest: New. * testsuite/30_threads/mutex/dest/destructor_locked.cc: New. * testsuite/30_threads/mutex/native_handle: New. * testsuite/30_threads/mutex/native_handle/1.cc: New. * testsuite/30_threads/mutex/cons: New. * testsuite/30_threads/mutex/cons/assign_neg.cc: New. * testsuite/30_threads/mutex/cons/1.cc: New. * testsuite/30_threads/mutex/cons/copy_neg.cc: New. * testsuite/30_threads/mutex/requirements: New. * testsuite/30_threads/mutex/requirements/typedefs.cc: New. * testsuite/30_threads/mutex/try_lock: New. * testsuite/30_threads/mutex/try_lock/1.cc: New. * testsuite/30_threads/mutex/try_lock/2.cc: New. * testsuite/30_threads/mutex/lock: New. * testsuite/30_threads/mutex/lock/1.cc: New. * testsuite/30_threads/mutex/unlock: New. * testsuite/30_threads/mutex/unlock/1.cc: New. * testsuite/30_threads/recursive_mutex: New. * testsuite/30_threads/recursive_mutex/dest: New. * testsuite/30_threads/recursive_mutex/dest/destructor_locked.cc: New. * testsuite/30_threads/recursive_mutex/native_handle: New. * testsuite/30_threads/recursive_mutex/native_handle/1.cc: New. * testsuite/30_threads/recursive_mutex/cons: New. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: New. * testsuite/30_threads/recursive_mutex/cons/1.cc: New. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: New. * testsuite/30_threads/recursive_mutex/requirements: New. * testsuite/30_threads/recursive_mutex/requirements/typedefs.cc: New. * testsuite/30_threads/lock_guard: New. * testsuite/30_threads/lock_guard/requirements: New. * testsuite/30_threads/lock_guard/requirements/typedefs.cc: New. * testsuite/30_threads/lock_guard/requirements/ explicit_instantiation.cc: New. * testsuite/30_threads/headers: New. * testsuite/30_threads/headers/mutex: New. * testsuite/30_threads/headers/mutex/types_std_c++0x.cc: New. * testsuite/30_threads/headers/mutex/std_c++0x_neg.cc: New. * testsuite/30_threads/headers/condition_variable: New. * testsuite/30_threads/headers/condition_variable/ types_std_c++0x.cc: New. * testsuite/30_threads/headers/condition_variable/std_c++0x_neg.cc: New. * testsuite/30_threads/once_flag: New. * testsuite/30_threads/unique_lock: New. * testsuite/30_threads/unique_lock/requirements: New. * testsuite/30_threads/unique_lock/requirements/typedefs.cc: New. * testsuite/30_threads/unique_lock/requirements/ explicit_instantiation.cc: New. * testsuite/17_intro/headers/c++200x/all.cc: Add new includes. From-SVN: r135007
2008-05-06 23:11:47 +02:00
unique_lock(mutex_type& __m, try_to_lock_t)
: _M_device(&__m), _M_owns(_M_device->try_lock())
{ }
condition_variable: New. 2008-05-06 Benjamin Kosnik <bkoz@redhat.com> * include/std/condition_variable: New. * include/std/mutex: New. * src/condition_variable.cc: New. * src/mutex.cc: New. * include/bits/functexcept.h: Add __throw_system_error varients. * src/functexcept.cc: Same. * config/abi/pre/gnu.ver: Add exports. * doc/xml/manual/using.xml: Add new includes. * doc/doxygen/user.cfg.in: Doxygen support. * doc/doxygen/doxygroups.cc: Same. * include/Makefile.am: Add mutex, condition_variable. * include/Makefile.in: Regenerated. * src/Makefile.am: Add mutex.cc, condition_variable.cc. * src/Makefile.in: Regenerated. * testsuite/30_threads: New. * testsuite/30_threads/lock_error: New. * testsuite/30_threads/mutex: New. * testsuite/30_threads/mutex/dest: New. * testsuite/30_threads/mutex/dest/destructor_locked.cc: New. * testsuite/30_threads/mutex/native_handle: New. * testsuite/30_threads/mutex/native_handle/1.cc: New. * testsuite/30_threads/mutex/cons: New. * testsuite/30_threads/mutex/cons/assign_neg.cc: New. * testsuite/30_threads/mutex/cons/1.cc: New. * testsuite/30_threads/mutex/cons/copy_neg.cc: New. * testsuite/30_threads/mutex/requirements: New. * testsuite/30_threads/mutex/requirements/typedefs.cc: New. * testsuite/30_threads/mutex/try_lock: New. * testsuite/30_threads/mutex/try_lock/1.cc: New. * testsuite/30_threads/mutex/try_lock/2.cc: New. * testsuite/30_threads/mutex/lock: New. * testsuite/30_threads/mutex/lock/1.cc: New. * testsuite/30_threads/mutex/unlock: New. * testsuite/30_threads/mutex/unlock/1.cc: New. * testsuite/30_threads/recursive_mutex: New. * testsuite/30_threads/recursive_mutex/dest: New. * testsuite/30_threads/recursive_mutex/dest/destructor_locked.cc: New. * testsuite/30_threads/recursive_mutex/native_handle: New. * testsuite/30_threads/recursive_mutex/native_handle/1.cc: New. * testsuite/30_threads/recursive_mutex/cons: New. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: New. * testsuite/30_threads/recursive_mutex/cons/1.cc: New. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: New. * testsuite/30_threads/recursive_mutex/requirements: New. * testsuite/30_threads/recursive_mutex/requirements/typedefs.cc: New. * testsuite/30_threads/lock_guard: New. * testsuite/30_threads/lock_guard/requirements: New. * testsuite/30_threads/lock_guard/requirements/typedefs.cc: New. * testsuite/30_threads/lock_guard/requirements/ explicit_instantiation.cc: New. * testsuite/30_threads/headers: New. * testsuite/30_threads/headers/mutex: New. * testsuite/30_threads/headers/mutex/types_std_c++0x.cc: New. * testsuite/30_threads/headers/mutex/std_c++0x_neg.cc: New. * testsuite/30_threads/headers/condition_variable: New. * testsuite/30_threads/headers/condition_variable/ types_std_c++0x.cc: New. * testsuite/30_threads/headers/condition_variable/std_c++0x_neg.cc: New. * testsuite/30_threads/once_flag: New. * testsuite/30_threads/unique_lock: New. * testsuite/30_threads/unique_lock/requirements: New. * testsuite/30_threads/unique_lock/requirements/typedefs.cc: New. * testsuite/30_threads/unique_lock/requirements/ explicit_instantiation.cc: New. * testsuite/17_intro/headers/c++200x/all.cc: Add new includes. From-SVN: r135007
2008-05-06 23:11:47 +02:00
unique_lock(mutex_type& __m, adopt_lock_t)
condition_variable: New. 2008-05-06 Benjamin Kosnik <bkoz@redhat.com> * include/std/condition_variable: New. * include/std/mutex: New. * src/condition_variable.cc: New. * src/mutex.cc: New. * include/bits/functexcept.h: Add __throw_system_error varients. * src/functexcept.cc: Same. * config/abi/pre/gnu.ver: Add exports. * doc/xml/manual/using.xml: Add new includes. * doc/doxygen/user.cfg.in: Doxygen support. * doc/doxygen/doxygroups.cc: Same. * include/Makefile.am: Add mutex, condition_variable. * include/Makefile.in: Regenerated. * src/Makefile.am: Add mutex.cc, condition_variable.cc. * src/Makefile.in: Regenerated. * testsuite/30_threads: New. * testsuite/30_threads/lock_error: New. * testsuite/30_threads/mutex: New. * testsuite/30_threads/mutex/dest: New. * testsuite/30_threads/mutex/dest/destructor_locked.cc: New. * testsuite/30_threads/mutex/native_handle: New. * testsuite/30_threads/mutex/native_handle/1.cc: New. * testsuite/30_threads/mutex/cons: New. * testsuite/30_threads/mutex/cons/assign_neg.cc: New. * testsuite/30_threads/mutex/cons/1.cc: New. * testsuite/30_threads/mutex/cons/copy_neg.cc: New. * testsuite/30_threads/mutex/requirements: New. * testsuite/30_threads/mutex/requirements/typedefs.cc: New. * testsuite/30_threads/mutex/try_lock: New. * testsuite/30_threads/mutex/try_lock/1.cc: New. * testsuite/30_threads/mutex/try_lock/2.cc: New. * testsuite/30_threads/mutex/lock: New. * testsuite/30_threads/mutex/lock/1.cc: New. * testsuite/30_threads/mutex/unlock: New. * testsuite/30_threads/mutex/unlock/1.cc: New. * testsuite/30_threads/recursive_mutex: New. * testsuite/30_threads/recursive_mutex/dest: New. * testsuite/30_threads/recursive_mutex/dest/destructor_locked.cc: New. * testsuite/30_threads/recursive_mutex/native_handle: New. * testsuite/30_threads/recursive_mutex/native_handle/1.cc: New. * testsuite/30_threads/recursive_mutex/cons: New. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: New. * testsuite/30_threads/recursive_mutex/cons/1.cc: New. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: New. * testsuite/30_threads/recursive_mutex/requirements: New. * testsuite/30_threads/recursive_mutex/requirements/typedefs.cc: New. * testsuite/30_threads/lock_guard: New. * testsuite/30_threads/lock_guard/requirements: New. * testsuite/30_threads/lock_guard/requirements/typedefs.cc: New. * testsuite/30_threads/lock_guard/requirements/ explicit_instantiation.cc: New. * testsuite/30_threads/headers: New. * testsuite/30_threads/headers/mutex: New. * testsuite/30_threads/headers/mutex/types_std_c++0x.cc: New. * testsuite/30_threads/headers/mutex/std_c++0x_neg.cc: New. * testsuite/30_threads/headers/condition_variable: New. * testsuite/30_threads/headers/condition_variable/ types_std_c++0x.cc: New. * testsuite/30_threads/headers/condition_variable/std_c++0x_neg.cc: New. * testsuite/30_threads/once_flag: New. * testsuite/30_threads/unique_lock: New. * testsuite/30_threads/unique_lock/requirements: New. * testsuite/30_threads/unique_lock/requirements/typedefs.cc: New. * testsuite/30_threads/unique_lock/requirements/ explicit_instantiation.cc: New. * testsuite/17_intro/headers/c++200x/all.cc: Add new includes. From-SVN: r135007
2008-05-06 23:11:47 +02:00
: _M_device(&__m), _M_owns(true)
{
// XXX calling thread owns mutex
}
template<typename _Clock, typename _Duration>
condition_variable (condition_variable): Remove _M_internal_mutex. 2009-02-09 Benjamin Kosnik <bkoz@redhat.com> * include/std/condition_variable (condition_variable): Remove _M_internal_mutex. Add private __native_type typedef. * src/condition_variable.cc (condition_variable::notify_one): Remove _M_internal_mutex use. Use typedef. (condition_variable::notify_all): Same. * include/std/mutex (mutex): Add private __native_type typedef. Use it. (recursive_mutex): Same. (timed_mutex): Same. (recursive_timed_mutex): Same. (once_flag): Make __native_type typedef private. * include/std/thread (this_thread): Add minimal markup. * testsuite/30_threads/condition_variable_any/cons/assign_neg.cc: Adjust line numbers. * testsuite/30_threads/condition_variable_any/cons/copy_neg.cc: Same. * testsuite/30_threads/mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/mutex/cons/copy_neg.cc: Same. * testsuite/30_threads/timed_mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/timed_mutex/cons/copy_neg.cc: Same. * testsuite/30_threads/thread/cons/assign_neg.cc: Same. * testsuite/30_threads/thread/cons/copy_neg.cc: Same. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: Same. * testsuite/30_threads/condition_variable/cons/assign_neg.cc: Same. * testsuite/30_threads/condition_variable/cons/copy_neg.cc: Same. * testsuite/30_threads/recursive_timed_mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/recursive_timed_mutex/cons/copy_neg.cc: Same. * testsuite/util/thread/all.h: Testsuite utilities for testing thread. * testsuite/30_threads/condition_variable_any/native_handle/ typesizes.cc: New. * testsuite/30_threads/mutex/native_handle/typesizes.cc: Same. * testsuite/30_threads/timed_mutex/native_handle/typesizes.cc: Same. * testsuite/30_threads/thread/native_handle/typesizes.cc: Same. * testsuite/30_threads/recursive_mutex/native_handle/typesizes.cc: Same. * testsuite/30_threads/condition_variable/native_handle/ typesizes.cc: Same. * testsuite/30_threads/recursive_timed_mutex/native_handle/ typesizes.cc: Same. From-SVN: r144053
2009-02-10 09:29:57 +01:00
unique_lock(mutex_type& __m,
condition_variable: Use new deleted ctors. 2008-09-03 Chris Fairles <chris.fairles@gmail.com> * include/std/condition_variable: Use new deleted ctors. * include/std/mutex: Likewise plus implement timed_mutex, recursive_timed_mutex and call_once. * src/condition_variable.cc: Implement wait(). Use gthread types. Remove _GTHREADS_HAS_COND checks in favor of global _GLIBCXX_HAS_GTHREADS. * src/mutex.cc (call_once): Implementation using TLS with mutex fallback. * config/abi/pre/gnu.ver: Add exported symbols. * testsuite/lib/libstdc++.exp (check_v3_target_gthreads): New. * testsuite/lib/dg-options.exp (dg-require-gthreads): Likewise. * testsuite/30_threads/lock_guard/requirements/typedefs.cc: Use dg-require-gthreads and dg-require-cstdint. * testsuite/30_threads/lock_guard/requirements/ explicit_instantiation.cc: Likewise. * testsuite/30_threads/mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/mutex/cons/1.cc: Likewise. * testsuite/30_threads/mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/mutex/lock/1.cc: Likewise. * testsuite/30_threads/mutex/unlock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/recursive_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/recursive_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/recursive_mutex/lock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/unique_lock/requirements/ explicit_instantiation.cc: Likewise. * testsuite/30_threads/unique_lock/requirements/typedefs.cc: Likewise. * testsuite/30_threads/mutex/cons/assign_neg.cc: Also adjust dg-error lines for deleted members. * testsuite/30_threads/mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/call_once/once_flag.cc: New. * testsuite/30_threads/call_once/call_once1.cc: Likewise. * testsuite/30_threads/condition_variable/cons/1.cc: Likewise. * testsuite/30_threads/condition_variable/cons/copy_neg.cc: Likewise * testsuite/30_threads/condition_variable/cons/assign_neg.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/1.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/copy_neg.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/assign_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/timed_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_until/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_until/2.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/1.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/timed_mutex/lock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/2.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/3.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_until/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_until/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/lock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/lock/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/3.cc: Likewise. * testsuite/30_threads/unique_lock/modifiers/1.cc: Likewise. * testsuite/30_threads/unique_lock/modifiers/2.cc: Likewise. * testsuite/30_threads/unique_lock/cons/1.cc: Likewise. * testsuite/30_threads/unique_lock/cons/2.cc: Likewise. * testsuite/30_threads/unique_lock/cons/3.cc: Likewise. * testsuite/30_threads/unique_lock/cons/4.cc: Likewise. * testsuite/30_threads/unique_lock/cons/5.cc: Likewise. * testsuite/30_threads/unique_lock/cons/6.cc: Likewise. * testsuite/30_threads/unique_lock/locking/1.cc: Likewise. * testsuite/30_threads/unique_lock/locking/2.cc: Likewise. * testsuite/30_threads/unique_lock/locking/3.cc: Likewise. * testsuite/30_threads/unique_lock/locking/4.cc: Likewise. From-SVN: r139943
2008-09-03 19:46:09 +02:00
const chrono::time_point<_Clock, _Duration>& __atime)
: _M_device(&__m), _M_owns(_M_device->try_lock_until(__atime))
{ }
condition_variable: New. 2008-05-06 Benjamin Kosnik <bkoz@redhat.com> * include/std/condition_variable: New. * include/std/mutex: New. * src/condition_variable.cc: New. * src/mutex.cc: New. * include/bits/functexcept.h: Add __throw_system_error varients. * src/functexcept.cc: Same. * config/abi/pre/gnu.ver: Add exports. * doc/xml/manual/using.xml: Add new includes. * doc/doxygen/user.cfg.in: Doxygen support. * doc/doxygen/doxygroups.cc: Same. * include/Makefile.am: Add mutex, condition_variable. * include/Makefile.in: Regenerated. * src/Makefile.am: Add mutex.cc, condition_variable.cc. * src/Makefile.in: Regenerated. * testsuite/30_threads: New. * testsuite/30_threads/lock_error: New. * testsuite/30_threads/mutex: New. * testsuite/30_threads/mutex/dest: New. * testsuite/30_threads/mutex/dest/destructor_locked.cc: New. * testsuite/30_threads/mutex/native_handle: New. * testsuite/30_threads/mutex/native_handle/1.cc: New. * testsuite/30_threads/mutex/cons: New. * testsuite/30_threads/mutex/cons/assign_neg.cc: New. * testsuite/30_threads/mutex/cons/1.cc: New. * testsuite/30_threads/mutex/cons/copy_neg.cc: New. * testsuite/30_threads/mutex/requirements: New. * testsuite/30_threads/mutex/requirements/typedefs.cc: New. * testsuite/30_threads/mutex/try_lock: New. * testsuite/30_threads/mutex/try_lock/1.cc: New. * testsuite/30_threads/mutex/try_lock/2.cc: New. * testsuite/30_threads/mutex/lock: New. * testsuite/30_threads/mutex/lock/1.cc: New. * testsuite/30_threads/mutex/unlock: New. * testsuite/30_threads/mutex/unlock/1.cc: New. * testsuite/30_threads/recursive_mutex: New. * testsuite/30_threads/recursive_mutex/dest: New. * testsuite/30_threads/recursive_mutex/dest/destructor_locked.cc: New. * testsuite/30_threads/recursive_mutex/native_handle: New. * testsuite/30_threads/recursive_mutex/native_handle/1.cc: New. * testsuite/30_threads/recursive_mutex/cons: New. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: New. * testsuite/30_threads/recursive_mutex/cons/1.cc: New. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: New. * testsuite/30_threads/recursive_mutex/requirements: New. * testsuite/30_threads/recursive_mutex/requirements/typedefs.cc: New. * testsuite/30_threads/lock_guard: New. * testsuite/30_threads/lock_guard/requirements: New. * testsuite/30_threads/lock_guard/requirements/typedefs.cc: New. * testsuite/30_threads/lock_guard/requirements/ explicit_instantiation.cc: New. * testsuite/30_threads/headers: New. * testsuite/30_threads/headers/mutex: New. * testsuite/30_threads/headers/mutex/types_std_c++0x.cc: New. * testsuite/30_threads/headers/mutex/std_c++0x_neg.cc: New. * testsuite/30_threads/headers/condition_variable: New. * testsuite/30_threads/headers/condition_variable/ types_std_c++0x.cc: New. * testsuite/30_threads/headers/condition_variable/std_c++0x_neg.cc: New. * testsuite/30_threads/once_flag: New. * testsuite/30_threads/unique_lock: New. * testsuite/30_threads/unique_lock/requirements: New. * testsuite/30_threads/unique_lock/requirements/typedefs.cc: New. * testsuite/30_threads/unique_lock/requirements/ explicit_instantiation.cc: New. * testsuite/17_intro/headers/c++200x/all.cc: Add new includes. From-SVN: r135007
2008-05-06 23:11:47 +02:00
template<typename _Rep, typename _Period>
condition_variable (condition_variable): Remove _M_internal_mutex. 2009-02-09 Benjamin Kosnik <bkoz@redhat.com> * include/std/condition_variable (condition_variable): Remove _M_internal_mutex. Add private __native_type typedef. * src/condition_variable.cc (condition_variable::notify_one): Remove _M_internal_mutex use. Use typedef. (condition_variable::notify_all): Same. * include/std/mutex (mutex): Add private __native_type typedef. Use it. (recursive_mutex): Same. (timed_mutex): Same. (recursive_timed_mutex): Same. (once_flag): Make __native_type typedef private. * include/std/thread (this_thread): Add minimal markup. * testsuite/30_threads/condition_variable_any/cons/assign_neg.cc: Adjust line numbers. * testsuite/30_threads/condition_variable_any/cons/copy_neg.cc: Same. * testsuite/30_threads/mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/mutex/cons/copy_neg.cc: Same. * testsuite/30_threads/timed_mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/timed_mutex/cons/copy_neg.cc: Same. * testsuite/30_threads/thread/cons/assign_neg.cc: Same. * testsuite/30_threads/thread/cons/copy_neg.cc: Same. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: Same. * testsuite/30_threads/condition_variable/cons/assign_neg.cc: Same. * testsuite/30_threads/condition_variable/cons/copy_neg.cc: Same. * testsuite/30_threads/recursive_timed_mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/recursive_timed_mutex/cons/copy_neg.cc: Same. * testsuite/util/thread/all.h: Testsuite utilities for testing thread. * testsuite/30_threads/condition_variable_any/native_handle/ typesizes.cc: New. * testsuite/30_threads/mutex/native_handle/typesizes.cc: Same. * testsuite/30_threads/timed_mutex/native_handle/typesizes.cc: Same. * testsuite/30_threads/thread/native_handle/typesizes.cc: Same. * testsuite/30_threads/recursive_mutex/native_handle/typesizes.cc: Same. * testsuite/30_threads/condition_variable/native_handle/ typesizes.cc: Same. * testsuite/30_threads/recursive_timed_mutex/native_handle/ typesizes.cc: Same. From-SVN: r144053
2009-02-10 09:29:57 +01:00
unique_lock(mutex_type& __m,
condition_variable: Use new deleted ctors. 2008-09-03 Chris Fairles <chris.fairles@gmail.com> * include/std/condition_variable: Use new deleted ctors. * include/std/mutex: Likewise plus implement timed_mutex, recursive_timed_mutex and call_once. * src/condition_variable.cc: Implement wait(). Use gthread types. Remove _GTHREADS_HAS_COND checks in favor of global _GLIBCXX_HAS_GTHREADS. * src/mutex.cc (call_once): Implementation using TLS with mutex fallback. * config/abi/pre/gnu.ver: Add exported symbols. * testsuite/lib/libstdc++.exp (check_v3_target_gthreads): New. * testsuite/lib/dg-options.exp (dg-require-gthreads): Likewise. * testsuite/30_threads/lock_guard/requirements/typedefs.cc: Use dg-require-gthreads and dg-require-cstdint. * testsuite/30_threads/lock_guard/requirements/ explicit_instantiation.cc: Likewise. * testsuite/30_threads/mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/mutex/cons/1.cc: Likewise. * testsuite/30_threads/mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/mutex/lock/1.cc: Likewise. * testsuite/30_threads/mutex/unlock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/recursive_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/recursive_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/recursive_mutex/lock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/unique_lock/requirements/ explicit_instantiation.cc: Likewise. * testsuite/30_threads/unique_lock/requirements/typedefs.cc: Likewise. * testsuite/30_threads/mutex/cons/assign_neg.cc: Also adjust dg-error lines for deleted members. * testsuite/30_threads/mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/call_once/once_flag.cc: New. * testsuite/30_threads/call_once/call_once1.cc: Likewise. * testsuite/30_threads/condition_variable/cons/1.cc: Likewise. * testsuite/30_threads/condition_variable/cons/copy_neg.cc: Likewise * testsuite/30_threads/condition_variable/cons/assign_neg.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/1.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/copy_neg.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/assign_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/timed_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_until/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_until/2.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/1.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/timed_mutex/lock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/2.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/3.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_until/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_until/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/lock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/lock/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/3.cc: Likewise. * testsuite/30_threads/unique_lock/modifiers/1.cc: Likewise. * testsuite/30_threads/unique_lock/modifiers/2.cc: Likewise. * testsuite/30_threads/unique_lock/cons/1.cc: Likewise. * testsuite/30_threads/unique_lock/cons/2.cc: Likewise. * testsuite/30_threads/unique_lock/cons/3.cc: Likewise. * testsuite/30_threads/unique_lock/cons/4.cc: Likewise. * testsuite/30_threads/unique_lock/cons/5.cc: Likewise. * testsuite/30_threads/unique_lock/cons/6.cc: Likewise. * testsuite/30_threads/unique_lock/locking/1.cc: Likewise. * testsuite/30_threads/unique_lock/locking/2.cc: Likewise. * testsuite/30_threads/unique_lock/locking/3.cc: Likewise. * testsuite/30_threads/unique_lock/locking/4.cc: Likewise. From-SVN: r139943
2008-09-03 19:46:09 +02:00
const chrono::duration<_Rep, _Period>& __rtime)
: _M_device(&__m), _M_owns(_M_device->try_lock_for(__rtime))
{ }
condition_variable: New. 2008-05-06 Benjamin Kosnik <bkoz@redhat.com> * include/std/condition_variable: New. * include/std/mutex: New. * src/condition_variable.cc: New. * src/mutex.cc: New. * include/bits/functexcept.h: Add __throw_system_error varients. * src/functexcept.cc: Same. * config/abi/pre/gnu.ver: Add exports. * doc/xml/manual/using.xml: Add new includes. * doc/doxygen/user.cfg.in: Doxygen support. * doc/doxygen/doxygroups.cc: Same. * include/Makefile.am: Add mutex, condition_variable. * include/Makefile.in: Regenerated. * src/Makefile.am: Add mutex.cc, condition_variable.cc. * src/Makefile.in: Regenerated. * testsuite/30_threads: New. * testsuite/30_threads/lock_error: New. * testsuite/30_threads/mutex: New. * testsuite/30_threads/mutex/dest: New. * testsuite/30_threads/mutex/dest/destructor_locked.cc: New. * testsuite/30_threads/mutex/native_handle: New. * testsuite/30_threads/mutex/native_handle/1.cc: New. * testsuite/30_threads/mutex/cons: New. * testsuite/30_threads/mutex/cons/assign_neg.cc: New. * testsuite/30_threads/mutex/cons/1.cc: New. * testsuite/30_threads/mutex/cons/copy_neg.cc: New. * testsuite/30_threads/mutex/requirements: New. * testsuite/30_threads/mutex/requirements/typedefs.cc: New. * testsuite/30_threads/mutex/try_lock: New. * testsuite/30_threads/mutex/try_lock/1.cc: New. * testsuite/30_threads/mutex/try_lock/2.cc: New. * testsuite/30_threads/mutex/lock: New. * testsuite/30_threads/mutex/lock/1.cc: New. * testsuite/30_threads/mutex/unlock: New. * testsuite/30_threads/mutex/unlock/1.cc: New. * testsuite/30_threads/recursive_mutex: New. * testsuite/30_threads/recursive_mutex/dest: New. * testsuite/30_threads/recursive_mutex/dest/destructor_locked.cc: New. * testsuite/30_threads/recursive_mutex/native_handle: New. * testsuite/30_threads/recursive_mutex/native_handle/1.cc: New. * testsuite/30_threads/recursive_mutex/cons: New. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: New. * testsuite/30_threads/recursive_mutex/cons/1.cc: New. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: New. * testsuite/30_threads/recursive_mutex/requirements: New. * testsuite/30_threads/recursive_mutex/requirements/typedefs.cc: New. * testsuite/30_threads/lock_guard: New. * testsuite/30_threads/lock_guard/requirements: New. * testsuite/30_threads/lock_guard/requirements/typedefs.cc: New. * testsuite/30_threads/lock_guard/requirements/ explicit_instantiation.cc: New. * testsuite/30_threads/headers: New. * testsuite/30_threads/headers/mutex: New. * testsuite/30_threads/headers/mutex/types_std_c++0x.cc: New. * testsuite/30_threads/headers/mutex/std_c++0x_neg.cc: New. * testsuite/30_threads/headers/condition_variable: New. * testsuite/30_threads/headers/condition_variable/ types_std_c++0x.cc: New. * testsuite/30_threads/headers/condition_variable/std_c++0x_neg.cc: New. * testsuite/30_threads/once_flag: New. * testsuite/30_threads/unique_lock: New. * testsuite/30_threads/unique_lock/requirements: New. * testsuite/30_threads/unique_lock/requirements/typedefs.cc: New. * testsuite/30_threads/unique_lock/requirements/ explicit_instantiation.cc: New. * testsuite/17_intro/headers/c++200x/all.cc: Add new includes. From-SVN: r135007
2008-05-06 23:11:47 +02:00
~unique_lock()
{
if (_M_owns)
unlock();
}
condition_variable: Use new deleted ctors. 2008-09-03 Chris Fairles <chris.fairles@gmail.com> * include/std/condition_variable: Use new deleted ctors. * include/std/mutex: Likewise plus implement timed_mutex, recursive_timed_mutex and call_once. * src/condition_variable.cc: Implement wait(). Use gthread types. Remove _GTHREADS_HAS_COND checks in favor of global _GLIBCXX_HAS_GTHREADS. * src/mutex.cc (call_once): Implementation using TLS with mutex fallback. * config/abi/pre/gnu.ver: Add exported symbols. * testsuite/lib/libstdc++.exp (check_v3_target_gthreads): New. * testsuite/lib/dg-options.exp (dg-require-gthreads): Likewise. * testsuite/30_threads/lock_guard/requirements/typedefs.cc: Use dg-require-gthreads and dg-require-cstdint. * testsuite/30_threads/lock_guard/requirements/ explicit_instantiation.cc: Likewise. * testsuite/30_threads/mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/mutex/cons/1.cc: Likewise. * testsuite/30_threads/mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/mutex/lock/1.cc: Likewise. * testsuite/30_threads/mutex/unlock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/recursive_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/recursive_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/recursive_mutex/lock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/unique_lock/requirements/ explicit_instantiation.cc: Likewise. * testsuite/30_threads/unique_lock/requirements/typedefs.cc: Likewise. * testsuite/30_threads/mutex/cons/assign_neg.cc: Also adjust dg-error lines for deleted members. * testsuite/30_threads/mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/call_once/once_flag.cc: New. * testsuite/30_threads/call_once/call_once1.cc: Likewise. * testsuite/30_threads/condition_variable/cons/1.cc: Likewise. * testsuite/30_threads/condition_variable/cons/copy_neg.cc: Likewise * testsuite/30_threads/condition_variable/cons/assign_neg.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/1.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/copy_neg.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/assign_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/timed_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_until/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_until/2.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/1.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/timed_mutex/lock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/2.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/3.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_until/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_until/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/lock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/lock/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/3.cc: Likewise. * testsuite/30_threads/unique_lock/modifiers/1.cc: Likewise. * testsuite/30_threads/unique_lock/modifiers/2.cc: Likewise. * testsuite/30_threads/unique_lock/cons/1.cc: Likewise. * testsuite/30_threads/unique_lock/cons/2.cc: Likewise. * testsuite/30_threads/unique_lock/cons/3.cc: Likewise. * testsuite/30_threads/unique_lock/cons/4.cc: Likewise. * testsuite/30_threads/unique_lock/cons/5.cc: Likewise. * testsuite/30_threads/unique_lock/cons/6.cc: Likewise. * testsuite/30_threads/unique_lock/locking/1.cc: Likewise. * testsuite/30_threads/unique_lock/locking/2.cc: Likewise. * testsuite/30_threads/unique_lock/locking/3.cc: Likewise. * testsuite/30_threads/unique_lock/locking/4.cc: Likewise. From-SVN: r139943
2008-09-03 19:46:09 +02:00
unique_lock(const unique_lock&) = delete;
unique_lock& operator=(const unique_lock&) = delete;
unique_lock(unique_lock&& __u) noexcept
condition_variable: Use new deleted ctors. 2008-09-03 Chris Fairles <chris.fairles@gmail.com> * include/std/condition_variable: Use new deleted ctors. * include/std/mutex: Likewise plus implement timed_mutex, recursive_timed_mutex and call_once. * src/condition_variable.cc: Implement wait(). Use gthread types. Remove _GTHREADS_HAS_COND checks in favor of global _GLIBCXX_HAS_GTHREADS. * src/mutex.cc (call_once): Implementation using TLS with mutex fallback. * config/abi/pre/gnu.ver: Add exported symbols. * testsuite/lib/libstdc++.exp (check_v3_target_gthreads): New. * testsuite/lib/dg-options.exp (dg-require-gthreads): Likewise. * testsuite/30_threads/lock_guard/requirements/typedefs.cc: Use dg-require-gthreads and dg-require-cstdint. * testsuite/30_threads/lock_guard/requirements/ explicit_instantiation.cc: Likewise. * testsuite/30_threads/mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/mutex/cons/1.cc: Likewise. * testsuite/30_threads/mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/mutex/lock/1.cc: Likewise. * testsuite/30_threads/mutex/unlock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/recursive_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/recursive_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/recursive_mutex/lock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/unique_lock/requirements/ explicit_instantiation.cc: Likewise. * testsuite/30_threads/unique_lock/requirements/typedefs.cc: Likewise. * testsuite/30_threads/mutex/cons/assign_neg.cc: Also adjust dg-error lines for deleted members. * testsuite/30_threads/mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/call_once/once_flag.cc: New. * testsuite/30_threads/call_once/call_once1.cc: Likewise. * testsuite/30_threads/condition_variable/cons/1.cc: Likewise. * testsuite/30_threads/condition_variable/cons/copy_neg.cc: Likewise * testsuite/30_threads/condition_variable/cons/assign_neg.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/1.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/copy_neg.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/assign_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/timed_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_until/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_until/2.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/1.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/timed_mutex/lock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/2.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/3.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_until/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_until/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/lock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/lock/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/3.cc: Likewise. * testsuite/30_threads/unique_lock/modifiers/1.cc: Likewise. * testsuite/30_threads/unique_lock/modifiers/2.cc: Likewise. * testsuite/30_threads/unique_lock/cons/1.cc: Likewise. * testsuite/30_threads/unique_lock/cons/2.cc: Likewise. * testsuite/30_threads/unique_lock/cons/3.cc: Likewise. * testsuite/30_threads/unique_lock/cons/4.cc: Likewise. * testsuite/30_threads/unique_lock/cons/5.cc: Likewise. * testsuite/30_threads/unique_lock/cons/6.cc: Likewise. * testsuite/30_threads/unique_lock/locking/1.cc: Likewise. * testsuite/30_threads/unique_lock/locking/2.cc: Likewise. * testsuite/30_threads/unique_lock/locking/3.cc: Likewise. * testsuite/30_threads/unique_lock/locking/4.cc: Likewise. From-SVN: r139943
2008-09-03 19:46:09 +02:00
: _M_device(__u._M_device), _M_owns(__u._M_owns)
{
__u._M_device = 0;
__u._M_owns = false;
}
unique_lock& operator=(unique_lock&& __u) noexcept
condition_variable: Use new deleted ctors. 2008-09-03 Chris Fairles <chris.fairles@gmail.com> * include/std/condition_variable: Use new deleted ctors. * include/std/mutex: Likewise plus implement timed_mutex, recursive_timed_mutex and call_once. * src/condition_variable.cc: Implement wait(). Use gthread types. Remove _GTHREADS_HAS_COND checks in favor of global _GLIBCXX_HAS_GTHREADS. * src/mutex.cc (call_once): Implementation using TLS with mutex fallback. * config/abi/pre/gnu.ver: Add exported symbols. * testsuite/lib/libstdc++.exp (check_v3_target_gthreads): New. * testsuite/lib/dg-options.exp (dg-require-gthreads): Likewise. * testsuite/30_threads/lock_guard/requirements/typedefs.cc: Use dg-require-gthreads and dg-require-cstdint. * testsuite/30_threads/lock_guard/requirements/ explicit_instantiation.cc: Likewise. * testsuite/30_threads/mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/mutex/cons/1.cc: Likewise. * testsuite/30_threads/mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/mutex/lock/1.cc: Likewise. * testsuite/30_threads/mutex/unlock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/recursive_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/recursive_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/recursive_mutex/lock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/unique_lock/requirements/ explicit_instantiation.cc: Likewise. * testsuite/30_threads/unique_lock/requirements/typedefs.cc: Likewise. * testsuite/30_threads/mutex/cons/assign_neg.cc: Also adjust dg-error lines for deleted members. * testsuite/30_threads/mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/call_once/once_flag.cc: New. * testsuite/30_threads/call_once/call_once1.cc: Likewise. * testsuite/30_threads/condition_variable/cons/1.cc: Likewise. * testsuite/30_threads/condition_variable/cons/copy_neg.cc: Likewise * testsuite/30_threads/condition_variable/cons/assign_neg.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/1.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/copy_neg.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/assign_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/timed_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_until/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_until/2.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/1.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/timed_mutex/lock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/2.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/3.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_until/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_until/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/lock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/lock/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/3.cc: Likewise. * testsuite/30_threads/unique_lock/modifiers/1.cc: Likewise. * testsuite/30_threads/unique_lock/modifiers/2.cc: Likewise. * testsuite/30_threads/unique_lock/cons/1.cc: Likewise. * testsuite/30_threads/unique_lock/cons/2.cc: Likewise. * testsuite/30_threads/unique_lock/cons/3.cc: Likewise. * testsuite/30_threads/unique_lock/cons/4.cc: Likewise. * testsuite/30_threads/unique_lock/cons/5.cc: Likewise. * testsuite/30_threads/unique_lock/cons/6.cc: Likewise. * testsuite/30_threads/unique_lock/locking/1.cc: Likewise. * testsuite/30_threads/unique_lock/locking/2.cc: Likewise. * testsuite/30_threads/unique_lock/locking/3.cc: Likewise. * testsuite/30_threads/unique_lock/locking/4.cc: Likewise. From-SVN: r139943
2008-09-03 19:46:09 +02:00
{
condition_variable (condition_variable): Remove _M_internal_mutex. 2009-02-09 Benjamin Kosnik <bkoz@redhat.com> * include/std/condition_variable (condition_variable): Remove _M_internal_mutex. Add private __native_type typedef. * src/condition_variable.cc (condition_variable::notify_one): Remove _M_internal_mutex use. Use typedef. (condition_variable::notify_all): Same. * include/std/mutex (mutex): Add private __native_type typedef. Use it. (recursive_mutex): Same. (timed_mutex): Same. (recursive_timed_mutex): Same. (once_flag): Make __native_type typedef private. * include/std/thread (this_thread): Add minimal markup. * testsuite/30_threads/condition_variable_any/cons/assign_neg.cc: Adjust line numbers. * testsuite/30_threads/condition_variable_any/cons/copy_neg.cc: Same. * testsuite/30_threads/mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/mutex/cons/copy_neg.cc: Same. * testsuite/30_threads/timed_mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/timed_mutex/cons/copy_neg.cc: Same. * testsuite/30_threads/thread/cons/assign_neg.cc: Same. * testsuite/30_threads/thread/cons/copy_neg.cc: Same. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: Same. * testsuite/30_threads/condition_variable/cons/assign_neg.cc: Same. * testsuite/30_threads/condition_variable/cons/copy_neg.cc: Same. * testsuite/30_threads/recursive_timed_mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/recursive_timed_mutex/cons/copy_neg.cc: Same. * testsuite/util/thread/all.h: Testsuite utilities for testing thread. * testsuite/30_threads/condition_variable_any/native_handle/ typesizes.cc: New. * testsuite/30_threads/mutex/native_handle/typesizes.cc: Same. * testsuite/30_threads/timed_mutex/native_handle/typesizes.cc: Same. * testsuite/30_threads/thread/native_handle/typesizes.cc: Same. * testsuite/30_threads/recursive_mutex/native_handle/typesizes.cc: Same. * testsuite/30_threads/condition_variable/native_handle/ typesizes.cc: Same. * testsuite/30_threads/recursive_timed_mutex/native_handle/ typesizes.cc: Same. From-SVN: r144053
2009-02-10 09:29:57 +01:00
if(_M_owns)
condition_variable: Use new deleted ctors. 2008-09-03 Chris Fairles <chris.fairles@gmail.com> * include/std/condition_variable: Use new deleted ctors. * include/std/mutex: Likewise plus implement timed_mutex, recursive_timed_mutex and call_once. * src/condition_variable.cc: Implement wait(). Use gthread types. Remove _GTHREADS_HAS_COND checks in favor of global _GLIBCXX_HAS_GTHREADS. * src/mutex.cc (call_once): Implementation using TLS with mutex fallback. * config/abi/pre/gnu.ver: Add exported symbols. * testsuite/lib/libstdc++.exp (check_v3_target_gthreads): New. * testsuite/lib/dg-options.exp (dg-require-gthreads): Likewise. * testsuite/30_threads/lock_guard/requirements/typedefs.cc: Use dg-require-gthreads and dg-require-cstdint. * testsuite/30_threads/lock_guard/requirements/ explicit_instantiation.cc: Likewise. * testsuite/30_threads/mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/mutex/cons/1.cc: Likewise. * testsuite/30_threads/mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/mutex/lock/1.cc: Likewise. * testsuite/30_threads/mutex/unlock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/recursive_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/recursive_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/recursive_mutex/lock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/unique_lock/requirements/ explicit_instantiation.cc: Likewise. * testsuite/30_threads/unique_lock/requirements/typedefs.cc: Likewise. * testsuite/30_threads/mutex/cons/assign_neg.cc: Also adjust dg-error lines for deleted members. * testsuite/30_threads/mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/call_once/once_flag.cc: New. * testsuite/30_threads/call_once/call_once1.cc: Likewise. * testsuite/30_threads/condition_variable/cons/1.cc: Likewise. * testsuite/30_threads/condition_variable/cons/copy_neg.cc: Likewise * testsuite/30_threads/condition_variable/cons/assign_neg.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/1.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/copy_neg.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/assign_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/timed_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_until/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_until/2.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/1.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/timed_mutex/lock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/2.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/3.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_until/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_until/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/lock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/lock/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/3.cc: Likewise. * testsuite/30_threads/unique_lock/modifiers/1.cc: Likewise. * testsuite/30_threads/unique_lock/modifiers/2.cc: Likewise. * testsuite/30_threads/unique_lock/cons/1.cc: Likewise. * testsuite/30_threads/unique_lock/cons/2.cc: Likewise. * testsuite/30_threads/unique_lock/cons/3.cc: Likewise. * testsuite/30_threads/unique_lock/cons/4.cc: Likewise. * testsuite/30_threads/unique_lock/cons/5.cc: Likewise. * testsuite/30_threads/unique_lock/cons/6.cc: Likewise. * testsuite/30_threads/unique_lock/locking/1.cc: Likewise. * testsuite/30_threads/unique_lock/locking/2.cc: Likewise. * testsuite/30_threads/unique_lock/locking/3.cc: Likewise. * testsuite/30_threads/unique_lock/locking/4.cc: Likewise. From-SVN: r139943
2008-09-03 19:46:09 +02:00
unlock();
condition_variable (condition_variable): Remove _M_internal_mutex. 2009-02-09 Benjamin Kosnik <bkoz@redhat.com> * include/std/condition_variable (condition_variable): Remove _M_internal_mutex. Add private __native_type typedef. * src/condition_variable.cc (condition_variable::notify_one): Remove _M_internal_mutex use. Use typedef. (condition_variable::notify_all): Same. * include/std/mutex (mutex): Add private __native_type typedef. Use it. (recursive_mutex): Same. (timed_mutex): Same. (recursive_timed_mutex): Same. (once_flag): Make __native_type typedef private. * include/std/thread (this_thread): Add minimal markup. * testsuite/30_threads/condition_variable_any/cons/assign_neg.cc: Adjust line numbers. * testsuite/30_threads/condition_variable_any/cons/copy_neg.cc: Same. * testsuite/30_threads/mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/mutex/cons/copy_neg.cc: Same. * testsuite/30_threads/timed_mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/timed_mutex/cons/copy_neg.cc: Same. * testsuite/30_threads/thread/cons/assign_neg.cc: Same. * testsuite/30_threads/thread/cons/copy_neg.cc: Same. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: Same. * testsuite/30_threads/condition_variable/cons/assign_neg.cc: Same. * testsuite/30_threads/condition_variable/cons/copy_neg.cc: Same. * testsuite/30_threads/recursive_timed_mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/recursive_timed_mutex/cons/copy_neg.cc: Same. * testsuite/util/thread/all.h: Testsuite utilities for testing thread. * testsuite/30_threads/condition_variable_any/native_handle/ typesizes.cc: New. * testsuite/30_threads/mutex/native_handle/typesizes.cc: Same. * testsuite/30_threads/timed_mutex/native_handle/typesizes.cc: Same. * testsuite/30_threads/thread/native_handle/typesizes.cc: Same. * testsuite/30_threads/recursive_mutex/native_handle/typesizes.cc: Same. * testsuite/30_threads/condition_variable/native_handle/ typesizes.cc: Same. * testsuite/30_threads/recursive_timed_mutex/native_handle/ typesizes.cc: Same. From-SVN: r144053
2009-02-10 09:29:57 +01:00
condition_variable: Use new deleted ctors. 2008-09-03 Chris Fairles <chris.fairles@gmail.com> * include/std/condition_variable: Use new deleted ctors. * include/std/mutex: Likewise plus implement timed_mutex, recursive_timed_mutex and call_once. * src/condition_variable.cc: Implement wait(). Use gthread types. Remove _GTHREADS_HAS_COND checks in favor of global _GLIBCXX_HAS_GTHREADS. * src/mutex.cc (call_once): Implementation using TLS with mutex fallback. * config/abi/pre/gnu.ver: Add exported symbols. * testsuite/lib/libstdc++.exp (check_v3_target_gthreads): New. * testsuite/lib/dg-options.exp (dg-require-gthreads): Likewise. * testsuite/30_threads/lock_guard/requirements/typedefs.cc: Use dg-require-gthreads and dg-require-cstdint. * testsuite/30_threads/lock_guard/requirements/ explicit_instantiation.cc: Likewise. * testsuite/30_threads/mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/mutex/cons/1.cc: Likewise. * testsuite/30_threads/mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/mutex/lock/1.cc: Likewise. * testsuite/30_threads/mutex/unlock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/recursive_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/recursive_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/recursive_mutex/lock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/unique_lock/requirements/ explicit_instantiation.cc: Likewise. * testsuite/30_threads/unique_lock/requirements/typedefs.cc: Likewise. * testsuite/30_threads/mutex/cons/assign_neg.cc: Also adjust dg-error lines for deleted members. * testsuite/30_threads/mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/call_once/once_flag.cc: New. * testsuite/30_threads/call_once/call_once1.cc: Likewise. * testsuite/30_threads/condition_variable/cons/1.cc: Likewise. * testsuite/30_threads/condition_variable/cons/copy_neg.cc: Likewise * testsuite/30_threads/condition_variable/cons/assign_neg.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/1.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/copy_neg.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/assign_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/timed_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_until/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_until/2.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/1.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/timed_mutex/lock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/2.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/3.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_until/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_until/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/lock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/lock/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/3.cc: Likewise. * testsuite/30_threads/unique_lock/modifiers/1.cc: Likewise. * testsuite/30_threads/unique_lock/modifiers/2.cc: Likewise. * testsuite/30_threads/unique_lock/cons/1.cc: Likewise. * testsuite/30_threads/unique_lock/cons/2.cc: Likewise. * testsuite/30_threads/unique_lock/cons/3.cc: Likewise. * testsuite/30_threads/unique_lock/cons/4.cc: Likewise. * testsuite/30_threads/unique_lock/cons/5.cc: Likewise. * testsuite/30_threads/unique_lock/cons/6.cc: Likewise. * testsuite/30_threads/unique_lock/locking/1.cc: Likewise. * testsuite/30_threads/unique_lock/locking/2.cc: Likewise. * testsuite/30_threads/unique_lock/locking/3.cc: Likewise. * testsuite/30_threads/unique_lock/locking/4.cc: Likewise. From-SVN: r139943
2008-09-03 19:46:09 +02:00
unique_lock(std::move(__u)).swap(*this);
condition_variable: New. 2008-05-06 Benjamin Kosnik <bkoz@redhat.com> * include/std/condition_variable: New. * include/std/mutex: New. * src/condition_variable.cc: New. * src/mutex.cc: New. * include/bits/functexcept.h: Add __throw_system_error varients. * src/functexcept.cc: Same. * config/abi/pre/gnu.ver: Add exports. * doc/xml/manual/using.xml: Add new includes. * doc/doxygen/user.cfg.in: Doxygen support. * doc/doxygen/doxygroups.cc: Same. * include/Makefile.am: Add mutex, condition_variable. * include/Makefile.in: Regenerated. * src/Makefile.am: Add mutex.cc, condition_variable.cc. * src/Makefile.in: Regenerated. * testsuite/30_threads: New. * testsuite/30_threads/lock_error: New. * testsuite/30_threads/mutex: New. * testsuite/30_threads/mutex/dest: New. * testsuite/30_threads/mutex/dest/destructor_locked.cc: New. * testsuite/30_threads/mutex/native_handle: New. * testsuite/30_threads/mutex/native_handle/1.cc: New. * testsuite/30_threads/mutex/cons: New. * testsuite/30_threads/mutex/cons/assign_neg.cc: New. * testsuite/30_threads/mutex/cons/1.cc: New. * testsuite/30_threads/mutex/cons/copy_neg.cc: New. * testsuite/30_threads/mutex/requirements: New. * testsuite/30_threads/mutex/requirements/typedefs.cc: New. * testsuite/30_threads/mutex/try_lock: New. * testsuite/30_threads/mutex/try_lock/1.cc: New. * testsuite/30_threads/mutex/try_lock/2.cc: New. * testsuite/30_threads/mutex/lock: New. * testsuite/30_threads/mutex/lock/1.cc: New. * testsuite/30_threads/mutex/unlock: New. * testsuite/30_threads/mutex/unlock/1.cc: New. * testsuite/30_threads/recursive_mutex: New. * testsuite/30_threads/recursive_mutex/dest: New. * testsuite/30_threads/recursive_mutex/dest/destructor_locked.cc: New. * testsuite/30_threads/recursive_mutex/native_handle: New. * testsuite/30_threads/recursive_mutex/native_handle/1.cc: New. * testsuite/30_threads/recursive_mutex/cons: New. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: New. * testsuite/30_threads/recursive_mutex/cons/1.cc: New. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: New. * testsuite/30_threads/recursive_mutex/requirements: New. * testsuite/30_threads/recursive_mutex/requirements/typedefs.cc: New. * testsuite/30_threads/lock_guard: New. * testsuite/30_threads/lock_guard/requirements: New. * testsuite/30_threads/lock_guard/requirements/typedefs.cc: New. * testsuite/30_threads/lock_guard/requirements/ explicit_instantiation.cc: New. * testsuite/30_threads/headers: New. * testsuite/30_threads/headers/mutex: New. * testsuite/30_threads/headers/mutex/types_std_c++0x.cc: New. * testsuite/30_threads/headers/mutex/std_c++0x_neg.cc: New. * testsuite/30_threads/headers/condition_variable: New. * testsuite/30_threads/headers/condition_variable/ types_std_c++0x.cc: New. * testsuite/30_threads/headers/condition_variable/std_c++0x_neg.cc: New. * testsuite/30_threads/once_flag: New. * testsuite/30_threads/unique_lock: New. * testsuite/30_threads/unique_lock/requirements: New. * testsuite/30_threads/unique_lock/requirements/typedefs.cc: New. * testsuite/30_threads/unique_lock/requirements/ explicit_instantiation.cc: New. * testsuite/17_intro/headers/c++200x/all.cc: Add new includes. From-SVN: r135007
2008-05-06 23:11:47 +02:00
condition_variable: Use new deleted ctors. 2008-09-03 Chris Fairles <chris.fairles@gmail.com> * include/std/condition_variable: Use new deleted ctors. * include/std/mutex: Likewise plus implement timed_mutex, recursive_timed_mutex and call_once. * src/condition_variable.cc: Implement wait(). Use gthread types. Remove _GTHREADS_HAS_COND checks in favor of global _GLIBCXX_HAS_GTHREADS. * src/mutex.cc (call_once): Implementation using TLS with mutex fallback. * config/abi/pre/gnu.ver: Add exported symbols. * testsuite/lib/libstdc++.exp (check_v3_target_gthreads): New. * testsuite/lib/dg-options.exp (dg-require-gthreads): Likewise. * testsuite/30_threads/lock_guard/requirements/typedefs.cc: Use dg-require-gthreads and dg-require-cstdint. * testsuite/30_threads/lock_guard/requirements/ explicit_instantiation.cc: Likewise. * testsuite/30_threads/mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/mutex/cons/1.cc: Likewise. * testsuite/30_threads/mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/mutex/lock/1.cc: Likewise. * testsuite/30_threads/mutex/unlock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/recursive_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/recursive_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/recursive_mutex/lock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/unique_lock/requirements/ explicit_instantiation.cc: Likewise. * testsuite/30_threads/unique_lock/requirements/typedefs.cc: Likewise. * testsuite/30_threads/mutex/cons/assign_neg.cc: Also adjust dg-error lines for deleted members. * testsuite/30_threads/mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/call_once/once_flag.cc: New. * testsuite/30_threads/call_once/call_once1.cc: Likewise. * testsuite/30_threads/condition_variable/cons/1.cc: Likewise. * testsuite/30_threads/condition_variable/cons/copy_neg.cc: Likewise * testsuite/30_threads/condition_variable/cons/assign_neg.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/1.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/copy_neg.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/assign_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/timed_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_until/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_until/2.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/1.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/timed_mutex/lock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/2.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/3.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_until/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_until/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/lock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/lock/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/3.cc: Likewise. * testsuite/30_threads/unique_lock/modifiers/1.cc: Likewise. * testsuite/30_threads/unique_lock/modifiers/2.cc: Likewise. * testsuite/30_threads/unique_lock/cons/1.cc: Likewise. * testsuite/30_threads/unique_lock/cons/2.cc: Likewise. * testsuite/30_threads/unique_lock/cons/3.cc: Likewise. * testsuite/30_threads/unique_lock/cons/4.cc: Likewise. * testsuite/30_threads/unique_lock/cons/5.cc: Likewise. * testsuite/30_threads/unique_lock/cons/6.cc: Likewise. * testsuite/30_threads/unique_lock/locking/1.cc: Likewise. * testsuite/30_threads/unique_lock/locking/2.cc: Likewise. * testsuite/30_threads/unique_lock/locking/3.cc: Likewise. * testsuite/30_threads/unique_lock/locking/4.cc: Likewise. From-SVN: r139943
2008-09-03 19:46:09 +02:00
__u._M_device = 0;
__u._M_owns = false;
condition_variable (condition_variable): Remove _M_internal_mutex. 2009-02-09 Benjamin Kosnik <bkoz@redhat.com> * include/std/condition_variable (condition_variable): Remove _M_internal_mutex. Add private __native_type typedef. * src/condition_variable.cc (condition_variable::notify_one): Remove _M_internal_mutex use. Use typedef. (condition_variable::notify_all): Same. * include/std/mutex (mutex): Add private __native_type typedef. Use it. (recursive_mutex): Same. (timed_mutex): Same. (recursive_timed_mutex): Same. (once_flag): Make __native_type typedef private. * include/std/thread (this_thread): Add minimal markup. * testsuite/30_threads/condition_variable_any/cons/assign_neg.cc: Adjust line numbers. * testsuite/30_threads/condition_variable_any/cons/copy_neg.cc: Same. * testsuite/30_threads/mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/mutex/cons/copy_neg.cc: Same. * testsuite/30_threads/timed_mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/timed_mutex/cons/copy_neg.cc: Same. * testsuite/30_threads/thread/cons/assign_neg.cc: Same. * testsuite/30_threads/thread/cons/copy_neg.cc: Same. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: Same. * testsuite/30_threads/condition_variable/cons/assign_neg.cc: Same. * testsuite/30_threads/condition_variable/cons/copy_neg.cc: Same. * testsuite/30_threads/recursive_timed_mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/recursive_timed_mutex/cons/copy_neg.cc: Same. * testsuite/util/thread/all.h: Testsuite utilities for testing thread. * testsuite/30_threads/condition_variable_any/native_handle/ typesizes.cc: New. * testsuite/30_threads/mutex/native_handle/typesizes.cc: Same. * testsuite/30_threads/timed_mutex/native_handle/typesizes.cc: Same. * testsuite/30_threads/thread/native_handle/typesizes.cc: Same. * testsuite/30_threads/recursive_mutex/native_handle/typesizes.cc: Same. * testsuite/30_threads/condition_variable/native_handle/ typesizes.cc: Same. * testsuite/30_threads/recursive_timed_mutex/native_handle/ typesizes.cc: Same. From-SVN: r144053
2009-02-10 09:29:57 +01:00
condition_variable: Use new deleted ctors. 2008-09-03 Chris Fairles <chris.fairles@gmail.com> * include/std/condition_variable: Use new deleted ctors. * include/std/mutex: Likewise plus implement timed_mutex, recursive_timed_mutex and call_once. * src/condition_variable.cc: Implement wait(). Use gthread types. Remove _GTHREADS_HAS_COND checks in favor of global _GLIBCXX_HAS_GTHREADS. * src/mutex.cc (call_once): Implementation using TLS with mutex fallback. * config/abi/pre/gnu.ver: Add exported symbols. * testsuite/lib/libstdc++.exp (check_v3_target_gthreads): New. * testsuite/lib/dg-options.exp (dg-require-gthreads): Likewise. * testsuite/30_threads/lock_guard/requirements/typedefs.cc: Use dg-require-gthreads and dg-require-cstdint. * testsuite/30_threads/lock_guard/requirements/ explicit_instantiation.cc: Likewise. * testsuite/30_threads/mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/mutex/cons/1.cc: Likewise. * testsuite/30_threads/mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/mutex/lock/1.cc: Likewise. * testsuite/30_threads/mutex/unlock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/recursive_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/recursive_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/recursive_mutex/lock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/unique_lock/requirements/ explicit_instantiation.cc: Likewise. * testsuite/30_threads/unique_lock/requirements/typedefs.cc: Likewise. * testsuite/30_threads/mutex/cons/assign_neg.cc: Also adjust dg-error lines for deleted members. * testsuite/30_threads/mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/call_once/once_flag.cc: New. * testsuite/30_threads/call_once/call_once1.cc: Likewise. * testsuite/30_threads/condition_variable/cons/1.cc: Likewise. * testsuite/30_threads/condition_variable/cons/copy_neg.cc: Likewise * testsuite/30_threads/condition_variable/cons/assign_neg.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/1.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/copy_neg.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/assign_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/timed_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_until/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_until/2.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/1.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/timed_mutex/lock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/2.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/3.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_until/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_until/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/lock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/lock/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/3.cc: Likewise. * testsuite/30_threads/unique_lock/modifiers/1.cc: Likewise. * testsuite/30_threads/unique_lock/modifiers/2.cc: Likewise. * testsuite/30_threads/unique_lock/cons/1.cc: Likewise. * testsuite/30_threads/unique_lock/cons/2.cc: Likewise. * testsuite/30_threads/unique_lock/cons/3.cc: Likewise. * testsuite/30_threads/unique_lock/cons/4.cc: Likewise. * testsuite/30_threads/unique_lock/cons/5.cc: Likewise. * testsuite/30_threads/unique_lock/cons/6.cc: Likewise. * testsuite/30_threads/unique_lock/locking/1.cc: Likewise. * testsuite/30_threads/unique_lock/locking/2.cc: Likewise. * testsuite/30_threads/unique_lock/locking/3.cc: Likewise. * testsuite/30_threads/unique_lock/locking/4.cc: Likewise. From-SVN: r139943
2008-09-03 19:46:09 +02:00
return *this;
}
condition_variable: New. 2008-05-06 Benjamin Kosnik <bkoz@redhat.com> * include/std/condition_variable: New. * include/std/mutex: New. * src/condition_variable.cc: New. * src/mutex.cc: New. * include/bits/functexcept.h: Add __throw_system_error varients. * src/functexcept.cc: Same. * config/abi/pre/gnu.ver: Add exports. * doc/xml/manual/using.xml: Add new includes. * doc/doxygen/user.cfg.in: Doxygen support. * doc/doxygen/doxygroups.cc: Same. * include/Makefile.am: Add mutex, condition_variable. * include/Makefile.in: Regenerated. * src/Makefile.am: Add mutex.cc, condition_variable.cc. * src/Makefile.in: Regenerated. * testsuite/30_threads: New. * testsuite/30_threads/lock_error: New. * testsuite/30_threads/mutex: New. * testsuite/30_threads/mutex/dest: New. * testsuite/30_threads/mutex/dest/destructor_locked.cc: New. * testsuite/30_threads/mutex/native_handle: New. * testsuite/30_threads/mutex/native_handle/1.cc: New. * testsuite/30_threads/mutex/cons: New. * testsuite/30_threads/mutex/cons/assign_neg.cc: New. * testsuite/30_threads/mutex/cons/1.cc: New. * testsuite/30_threads/mutex/cons/copy_neg.cc: New. * testsuite/30_threads/mutex/requirements: New. * testsuite/30_threads/mutex/requirements/typedefs.cc: New. * testsuite/30_threads/mutex/try_lock: New. * testsuite/30_threads/mutex/try_lock/1.cc: New. * testsuite/30_threads/mutex/try_lock/2.cc: New. * testsuite/30_threads/mutex/lock: New. * testsuite/30_threads/mutex/lock/1.cc: New. * testsuite/30_threads/mutex/unlock: New. * testsuite/30_threads/mutex/unlock/1.cc: New. * testsuite/30_threads/recursive_mutex: New. * testsuite/30_threads/recursive_mutex/dest: New. * testsuite/30_threads/recursive_mutex/dest/destructor_locked.cc: New. * testsuite/30_threads/recursive_mutex/native_handle: New. * testsuite/30_threads/recursive_mutex/native_handle/1.cc: New. * testsuite/30_threads/recursive_mutex/cons: New. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: New. * testsuite/30_threads/recursive_mutex/cons/1.cc: New. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: New. * testsuite/30_threads/recursive_mutex/requirements: New. * testsuite/30_threads/recursive_mutex/requirements/typedefs.cc: New. * testsuite/30_threads/lock_guard: New. * testsuite/30_threads/lock_guard/requirements: New. * testsuite/30_threads/lock_guard/requirements/typedefs.cc: New. * testsuite/30_threads/lock_guard/requirements/ explicit_instantiation.cc: New. * testsuite/30_threads/headers: New. * testsuite/30_threads/headers/mutex: New. * testsuite/30_threads/headers/mutex/types_std_c++0x.cc: New. * testsuite/30_threads/headers/mutex/std_c++0x_neg.cc: New. * testsuite/30_threads/headers/condition_variable: New. * testsuite/30_threads/headers/condition_variable/ types_std_c++0x.cc: New. * testsuite/30_threads/headers/condition_variable/std_c++0x_neg.cc: New. * testsuite/30_threads/once_flag: New. * testsuite/30_threads/unique_lock: New. * testsuite/30_threads/unique_lock/requirements: New. * testsuite/30_threads/unique_lock/requirements/typedefs.cc: New. * testsuite/30_threads/unique_lock/requirements/ explicit_instantiation.cc: New. * testsuite/17_intro/headers/c++200x/all.cc: Add new includes. From-SVN: r135007
2008-05-06 23:11:47 +02:00
void
condition_variable: New. 2008-05-06 Benjamin Kosnik <bkoz@redhat.com> * include/std/condition_variable: New. * include/std/mutex: New. * src/condition_variable.cc: New. * src/mutex.cc: New. * include/bits/functexcept.h: Add __throw_system_error varients. * src/functexcept.cc: Same. * config/abi/pre/gnu.ver: Add exports. * doc/xml/manual/using.xml: Add new includes. * doc/doxygen/user.cfg.in: Doxygen support. * doc/doxygen/doxygroups.cc: Same. * include/Makefile.am: Add mutex, condition_variable. * include/Makefile.in: Regenerated. * src/Makefile.am: Add mutex.cc, condition_variable.cc. * src/Makefile.in: Regenerated. * testsuite/30_threads: New. * testsuite/30_threads/lock_error: New. * testsuite/30_threads/mutex: New. * testsuite/30_threads/mutex/dest: New. * testsuite/30_threads/mutex/dest/destructor_locked.cc: New. * testsuite/30_threads/mutex/native_handle: New. * testsuite/30_threads/mutex/native_handle/1.cc: New. * testsuite/30_threads/mutex/cons: New. * testsuite/30_threads/mutex/cons/assign_neg.cc: New. * testsuite/30_threads/mutex/cons/1.cc: New. * testsuite/30_threads/mutex/cons/copy_neg.cc: New. * testsuite/30_threads/mutex/requirements: New. * testsuite/30_threads/mutex/requirements/typedefs.cc: New. * testsuite/30_threads/mutex/try_lock: New. * testsuite/30_threads/mutex/try_lock/1.cc: New. * testsuite/30_threads/mutex/try_lock/2.cc: New. * testsuite/30_threads/mutex/lock: New. * testsuite/30_threads/mutex/lock/1.cc: New. * testsuite/30_threads/mutex/unlock: New. * testsuite/30_threads/mutex/unlock/1.cc: New. * testsuite/30_threads/recursive_mutex: New. * testsuite/30_threads/recursive_mutex/dest: New. * testsuite/30_threads/recursive_mutex/dest/destructor_locked.cc: New. * testsuite/30_threads/recursive_mutex/native_handle: New. * testsuite/30_threads/recursive_mutex/native_handle/1.cc: New. * testsuite/30_threads/recursive_mutex/cons: New. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: New. * testsuite/30_threads/recursive_mutex/cons/1.cc: New. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: New. * testsuite/30_threads/recursive_mutex/requirements: New. * testsuite/30_threads/recursive_mutex/requirements/typedefs.cc: New. * testsuite/30_threads/lock_guard: New. * testsuite/30_threads/lock_guard/requirements: New. * testsuite/30_threads/lock_guard/requirements/typedefs.cc: New. * testsuite/30_threads/lock_guard/requirements/ explicit_instantiation.cc: New. * testsuite/30_threads/headers: New. * testsuite/30_threads/headers/mutex: New. * testsuite/30_threads/headers/mutex/types_std_c++0x.cc: New. * testsuite/30_threads/headers/mutex/std_c++0x_neg.cc: New. * testsuite/30_threads/headers/condition_variable: New. * testsuite/30_threads/headers/condition_variable/ types_std_c++0x.cc: New. * testsuite/30_threads/headers/condition_variable/std_c++0x_neg.cc: New. * testsuite/30_threads/once_flag: New. * testsuite/30_threads/unique_lock: New. * testsuite/30_threads/unique_lock/requirements: New. * testsuite/30_threads/unique_lock/requirements/typedefs.cc: New. * testsuite/30_threads/unique_lock/requirements/ explicit_instantiation.cc: New. * testsuite/17_intro/headers/c++200x/all.cc: Add new includes. From-SVN: r135007
2008-05-06 23:11:47 +02:00
lock()
{
condition_variable: Use new deleted ctors. 2008-09-03 Chris Fairles <chris.fairles@gmail.com> * include/std/condition_variable: Use new deleted ctors. * include/std/mutex: Likewise plus implement timed_mutex, recursive_timed_mutex and call_once. * src/condition_variable.cc: Implement wait(). Use gthread types. Remove _GTHREADS_HAS_COND checks in favor of global _GLIBCXX_HAS_GTHREADS. * src/mutex.cc (call_once): Implementation using TLS with mutex fallback. * config/abi/pre/gnu.ver: Add exported symbols. * testsuite/lib/libstdc++.exp (check_v3_target_gthreads): New. * testsuite/lib/dg-options.exp (dg-require-gthreads): Likewise. * testsuite/30_threads/lock_guard/requirements/typedefs.cc: Use dg-require-gthreads and dg-require-cstdint. * testsuite/30_threads/lock_guard/requirements/ explicit_instantiation.cc: Likewise. * testsuite/30_threads/mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/mutex/cons/1.cc: Likewise. * testsuite/30_threads/mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/mutex/lock/1.cc: Likewise. * testsuite/30_threads/mutex/unlock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/recursive_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/recursive_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/recursive_mutex/lock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/unique_lock/requirements/ explicit_instantiation.cc: Likewise. * testsuite/30_threads/unique_lock/requirements/typedefs.cc: Likewise. * testsuite/30_threads/mutex/cons/assign_neg.cc: Also adjust dg-error lines for deleted members. * testsuite/30_threads/mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/call_once/once_flag.cc: New. * testsuite/30_threads/call_once/call_once1.cc: Likewise. * testsuite/30_threads/condition_variable/cons/1.cc: Likewise. * testsuite/30_threads/condition_variable/cons/copy_neg.cc: Likewise * testsuite/30_threads/condition_variable/cons/assign_neg.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/1.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/copy_neg.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/assign_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/timed_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_until/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_until/2.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/1.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/timed_mutex/lock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/2.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/3.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_until/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_until/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/lock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/lock/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/3.cc: Likewise. * testsuite/30_threads/unique_lock/modifiers/1.cc: Likewise. * testsuite/30_threads/unique_lock/modifiers/2.cc: Likewise. * testsuite/30_threads/unique_lock/cons/1.cc: Likewise. * testsuite/30_threads/unique_lock/cons/2.cc: Likewise. * testsuite/30_threads/unique_lock/cons/3.cc: Likewise. * testsuite/30_threads/unique_lock/cons/4.cc: Likewise. * testsuite/30_threads/unique_lock/cons/5.cc: Likewise. * testsuite/30_threads/unique_lock/cons/6.cc: Likewise. * testsuite/30_threads/unique_lock/locking/1.cc: Likewise. * testsuite/30_threads/unique_lock/locking/2.cc: Likewise. * testsuite/30_threads/unique_lock/locking/3.cc: Likewise. * testsuite/30_threads/unique_lock/locking/4.cc: Likewise. From-SVN: r139943
2008-09-03 19:46:09 +02:00
if (!_M_device)
__throw_system_error(int(errc::operation_not_permitted));
condition_variable: Use new deleted ctors. 2008-09-03 Chris Fairles <chris.fairles@gmail.com> * include/std/condition_variable: Use new deleted ctors. * include/std/mutex: Likewise plus implement timed_mutex, recursive_timed_mutex and call_once. * src/condition_variable.cc: Implement wait(). Use gthread types. Remove _GTHREADS_HAS_COND checks in favor of global _GLIBCXX_HAS_GTHREADS. * src/mutex.cc (call_once): Implementation using TLS with mutex fallback. * config/abi/pre/gnu.ver: Add exported symbols. * testsuite/lib/libstdc++.exp (check_v3_target_gthreads): New. * testsuite/lib/dg-options.exp (dg-require-gthreads): Likewise. * testsuite/30_threads/lock_guard/requirements/typedefs.cc: Use dg-require-gthreads and dg-require-cstdint. * testsuite/30_threads/lock_guard/requirements/ explicit_instantiation.cc: Likewise. * testsuite/30_threads/mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/mutex/cons/1.cc: Likewise. * testsuite/30_threads/mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/mutex/lock/1.cc: Likewise. * testsuite/30_threads/mutex/unlock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/recursive_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/recursive_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/recursive_mutex/lock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/unique_lock/requirements/ explicit_instantiation.cc: Likewise. * testsuite/30_threads/unique_lock/requirements/typedefs.cc: Likewise. * testsuite/30_threads/mutex/cons/assign_neg.cc: Also adjust dg-error lines for deleted members. * testsuite/30_threads/mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/call_once/once_flag.cc: New. * testsuite/30_threads/call_once/call_once1.cc: Likewise. * testsuite/30_threads/condition_variable/cons/1.cc: Likewise. * testsuite/30_threads/condition_variable/cons/copy_neg.cc: Likewise * testsuite/30_threads/condition_variable/cons/assign_neg.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/1.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/copy_neg.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/assign_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/timed_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_until/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_until/2.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/1.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/timed_mutex/lock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/2.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/3.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_until/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_until/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/lock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/lock/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/3.cc: Likewise. * testsuite/30_threads/unique_lock/modifiers/1.cc: Likewise. * testsuite/30_threads/unique_lock/modifiers/2.cc: Likewise. * testsuite/30_threads/unique_lock/cons/1.cc: Likewise. * testsuite/30_threads/unique_lock/cons/2.cc: Likewise. * testsuite/30_threads/unique_lock/cons/3.cc: Likewise. * testsuite/30_threads/unique_lock/cons/4.cc: Likewise. * testsuite/30_threads/unique_lock/cons/5.cc: Likewise. * testsuite/30_threads/unique_lock/cons/6.cc: Likewise. * testsuite/30_threads/unique_lock/locking/1.cc: Likewise. * testsuite/30_threads/unique_lock/locking/2.cc: Likewise. * testsuite/30_threads/unique_lock/locking/3.cc: Likewise. * testsuite/30_threads/unique_lock/locking/4.cc: Likewise. From-SVN: r139943
2008-09-03 19:46:09 +02:00
else if (_M_owns)
__throw_system_error(int(errc::resource_deadlock_would_occur));
condition_variable: New. 2008-05-06 Benjamin Kosnik <bkoz@redhat.com> * include/std/condition_variable: New. * include/std/mutex: New. * src/condition_variable.cc: New. * src/mutex.cc: New. * include/bits/functexcept.h: Add __throw_system_error varients. * src/functexcept.cc: Same. * config/abi/pre/gnu.ver: Add exports. * doc/xml/manual/using.xml: Add new includes. * doc/doxygen/user.cfg.in: Doxygen support. * doc/doxygen/doxygroups.cc: Same. * include/Makefile.am: Add mutex, condition_variable. * include/Makefile.in: Regenerated. * src/Makefile.am: Add mutex.cc, condition_variable.cc. * src/Makefile.in: Regenerated. * testsuite/30_threads: New. * testsuite/30_threads/lock_error: New. * testsuite/30_threads/mutex: New. * testsuite/30_threads/mutex/dest: New. * testsuite/30_threads/mutex/dest/destructor_locked.cc: New. * testsuite/30_threads/mutex/native_handle: New. * testsuite/30_threads/mutex/native_handle/1.cc: New. * testsuite/30_threads/mutex/cons: New. * testsuite/30_threads/mutex/cons/assign_neg.cc: New. * testsuite/30_threads/mutex/cons/1.cc: New. * testsuite/30_threads/mutex/cons/copy_neg.cc: New. * testsuite/30_threads/mutex/requirements: New. * testsuite/30_threads/mutex/requirements/typedefs.cc: New. * testsuite/30_threads/mutex/try_lock: New. * testsuite/30_threads/mutex/try_lock/1.cc: New. * testsuite/30_threads/mutex/try_lock/2.cc: New. * testsuite/30_threads/mutex/lock: New. * testsuite/30_threads/mutex/lock/1.cc: New. * testsuite/30_threads/mutex/unlock: New. * testsuite/30_threads/mutex/unlock/1.cc: New. * testsuite/30_threads/recursive_mutex: New. * testsuite/30_threads/recursive_mutex/dest: New. * testsuite/30_threads/recursive_mutex/dest/destructor_locked.cc: New. * testsuite/30_threads/recursive_mutex/native_handle: New. * testsuite/30_threads/recursive_mutex/native_handle/1.cc: New. * testsuite/30_threads/recursive_mutex/cons: New. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: New. * testsuite/30_threads/recursive_mutex/cons/1.cc: New. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: New. * testsuite/30_threads/recursive_mutex/requirements: New. * testsuite/30_threads/recursive_mutex/requirements/typedefs.cc: New. * testsuite/30_threads/lock_guard: New. * testsuite/30_threads/lock_guard/requirements: New. * testsuite/30_threads/lock_guard/requirements/typedefs.cc: New. * testsuite/30_threads/lock_guard/requirements/ explicit_instantiation.cc: New. * testsuite/30_threads/headers: New. * testsuite/30_threads/headers/mutex: New. * testsuite/30_threads/headers/mutex/types_std_c++0x.cc: New. * testsuite/30_threads/headers/mutex/std_c++0x_neg.cc: New. * testsuite/30_threads/headers/condition_variable: New. * testsuite/30_threads/headers/condition_variable/ types_std_c++0x.cc: New. * testsuite/30_threads/headers/condition_variable/std_c++0x_neg.cc: New. * testsuite/30_threads/once_flag: New. * testsuite/30_threads/unique_lock: New. * testsuite/30_threads/unique_lock/requirements: New. * testsuite/30_threads/unique_lock/requirements/typedefs.cc: New. * testsuite/30_threads/unique_lock/requirements/ explicit_instantiation.cc: New. * testsuite/17_intro/headers/c++200x/all.cc: Add new includes. From-SVN: r135007
2008-05-06 23:11:47 +02:00
else
condition_variable: Use new deleted ctors. 2008-09-03 Chris Fairles <chris.fairles@gmail.com> * include/std/condition_variable: Use new deleted ctors. * include/std/mutex: Likewise plus implement timed_mutex, recursive_timed_mutex and call_once. * src/condition_variable.cc: Implement wait(). Use gthread types. Remove _GTHREADS_HAS_COND checks in favor of global _GLIBCXX_HAS_GTHREADS. * src/mutex.cc (call_once): Implementation using TLS with mutex fallback. * config/abi/pre/gnu.ver: Add exported symbols. * testsuite/lib/libstdc++.exp (check_v3_target_gthreads): New. * testsuite/lib/dg-options.exp (dg-require-gthreads): Likewise. * testsuite/30_threads/lock_guard/requirements/typedefs.cc: Use dg-require-gthreads and dg-require-cstdint. * testsuite/30_threads/lock_guard/requirements/ explicit_instantiation.cc: Likewise. * testsuite/30_threads/mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/mutex/cons/1.cc: Likewise. * testsuite/30_threads/mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/mutex/lock/1.cc: Likewise. * testsuite/30_threads/mutex/unlock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/recursive_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/recursive_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/recursive_mutex/lock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/unique_lock/requirements/ explicit_instantiation.cc: Likewise. * testsuite/30_threads/unique_lock/requirements/typedefs.cc: Likewise. * testsuite/30_threads/mutex/cons/assign_neg.cc: Also adjust dg-error lines for deleted members. * testsuite/30_threads/mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/call_once/once_flag.cc: New. * testsuite/30_threads/call_once/call_once1.cc: Likewise. * testsuite/30_threads/condition_variable/cons/1.cc: Likewise. * testsuite/30_threads/condition_variable/cons/copy_neg.cc: Likewise * testsuite/30_threads/condition_variable/cons/assign_neg.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/1.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/copy_neg.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/assign_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/timed_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_until/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_until/2.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/1.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/timed_mutex/lock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/2.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/3.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_until/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_until/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/lock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/lock/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/3.cc: Likewise. * testsuite/30_threads/unique_lock/modifiers/1.cc: Likewise. * testsuite/30_threads/unique_lock/modifiers/2.cc: Likewise. * testsuite/30_threads/unique_lock/cons/1.cc: Likewise. * testsuite/30_threads/unique_lock/cons/2.cc: Likewise. * testsuite/30_threads/unique_lock/cons/3.cc: Likewise. * testsuite/30_threads/unique_lock/cons/4.cc: Likewise. * testsuite/30_threads/unique_lock/cons/5.cc: Likewise. * testsuite/30_threads/unique_lock/cons/6.cc: Likewise. * testsuite/30_threads/unique_lock/locking/1.cc: Likewise. * testsuite/30_threads/unique_lock/locking/2.cc: Likewise. * testsuite/30_threads/unique_lock/locking/3.cc: Likewise. * testsuite/30_threads/unique_lock/locking/4.cc: Likewise. From-SVN: r139943
2008-09-03 19:46:09 +02:00
{
_M_device->lock();
_M_owns = true;
}
condition_variable: New. 2008-05-06 Benjamin Kosnik <bkoz@redhat.com> * include/std/condition_variable: New. * include/std/mutex: New. * src/condition_variable.cc: New. * src/mutex.cc: New. * include/bits/functexcept.h: Add __throw_system_error varients. * src/functexcept.cc: Same. * config/abi/pre/gnu.ver: Add exports. * doc/xml/manual/using.xml: Add new includes. * doc/doxygen/user.cfg.in: Doxygen support. * doc/doxygen/doxygroups.cc: Same. * include/Makefile.am: Add mutex, condition_variable. * include/Makefile.in: Regenerated. * src/Makefile.am: Add mutex.cc, condition_variable.cc. * src/Makefile.in: Regenerated. * testsuite/30_threads: New. * testsuite/30_threads/lock_error: New. * testsuite/30_threads/mutex: New. * testsuite/30_threads/mutex/dest: New. * testsuite/30_threads/mutex/dest/destructor_locked.cc: New. * testsuite/30_threads/mutex/native_handle: New. * testsuite/30_threads/mutex/native_handle/1.cc: New. * testsuite/30_threads/mutex/cons: New. * testsuite/30_threads/mutex/cons/assign_neg.cc: New. * testsuite/30_threads/mutex/cons/1.cc: New. * testsuite/30_threads/mutex/cons/copy_neg.cc: New. * testsuite/30_threads/mutex/requirements: New. * testsuite/30_threads/mutex/requirements/typedefs.cc: New. * testsuite/30_threads/mutex/try_lock: New. * testsuite/30_threads/mutex/try_lock/1.cc: New. * testsuite/30_threads/mutex/try_lock/2.cc: New. * testsuite/30_threads/mutex/lock: New. * testsuite/30_threads/mutex/lock/1.cc: New. * testsuite/30_threads/mutex/unlock: New. * testsuite/30_threads/mutex/unlock/1.cc: New. * testsuite/30_threads/recursive_mutex: New. * testsuite/30_threads/recursive_mutex/dest: New. * testsuite/30_threads/recursive_mutex/dest/destructor_locked.cc: New. * testsuite/30_threads/recursive_mutex/native_handle: New. * testsuite/30_threads/recursive_mutex/native_handle/1.cc: New. * testsuite/30_threads/recursive_mutex/cons: New. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: New. * testsuite/30_threads/recursive_mutex/cons/1.cc: New. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: New. * testsuite/30_threads/recursive_mutex/requirements: New. * testsuite/30_threads/recursive_mutex/requirements/typedefs.cc: New. * testsuite/30_threads/lock_guard: New. * testsuite/30_threads/lock_guard/requirements: New. * testsuite/30_threads/lock_guard/requirements/typedefs.cc: New. * testsuite/30_threads/lock_guard/requirements/ explicit_instantiation.cc: New. * testsuite/30_threads/headers: New. * testsuite/30_threads/headers/mutex: New. * testsuite/30_threads/headers/mutex/types_std_c++0x.cc: New. * testsuite/30_threads/headers/mutex/std_c++0x_neg.cc: New. * testsuite/30_threads/headers/condition_variable: New. * testsuite/30_threads/headers/condition_variable/ types_std_c++0x.cc: New. * testsuite/30_threads/headers/condition_variable/std_c++0x_neg.cc: New. * testsuite/30_threads/once_flag: New. * testsuite/30_threads/unique_lock: New. * testsuite/30_threads/unique_lock/requirements: New. * testsuite/30_threads/unique_lock/requirements/typedefs.cc: New. * testsuite/30_threads/unique_lock/requirements/ explicit_instantiation.cc: New. * testsuite/17_intro/headers/c++200x/all.cc: Add new includes. From-SVN: r135007
2008-05-06 23:11:47 +02:00
}
bool
condition_variable: New. 2008-05-06 Benjamin Kosnik <bkoz@redhat.com> * include/std/condition_variable: New. * include/std/mutex: New. * src/condition_variable.cc: New. * src/mutex.cc: New. * include/bits/functexcept.h: Add __throw_system_error varients. * src/functexcept.cc: Same. * config/abi/pre/gnu.ver: Add exports. * doc/xml/manual/using.xml: Add new includes. * doc/doxygen/user.cfg.in: Doxygen support. * doc/doxygen/doxygroups.cc: Same. * include/Makefile.am: Add mutex, condition_variable. * include/Makefile.in: Regenerated. * src/Makefile.am: Add mutex.cc, condition_variable.cc. * src/Makefile.in: Regenerated. * testsuite/30_threads: New. * testsuite/30_threads/lock_error: New. * testsuite/30_threads/mutex: New. * testsuite/30_threads/mutex/dest: New. * testsuite/30_threads/mutex/dest/destructor_locked.cc: New. * testsuite/30_threads/mutex/native_handle: New. * testsuite/30_threads/mutex/native_handle/1.cc: New. * testsuite/30_threads/mutex/cons: New. * testsuite/30_threads/mutex/cons/assign_neg.cc: New. * testsuite/30_threads/mutex/cons/1.cc: New. * testsuite/30_threads/mutex/cons/copy_neg.cc: New. * testsuite/30_threads/mutex/requirements: New. * testsuite/30_threads/mutex/requirements/typedefs.cc: New. * testsuite/30_threads/mutex/try_lock: New. * testsuite/30_threads/mutex/try_lock/1.cc: New. * testsuite/30_threads/mutex/try_lock/2.cc: New. * testsuite/30_threads/mutex/lock: New. * testsuite/30_threads/mutex/lock/1.cc: New. * testsuite/30_threads/mutex/unlock: New. * testsuite/30_threads/mutex/unlock/1.cc: New. * testsuite/30_threads/recursive_mutex: New. * testsuite/30_threads/recursive_mutex/dest: New. * testsuite/30_threads/recursive_mutex/dest/destructor_locked.cc: New. * testsuite/30_threads/recursive_mutex/native_handle: New. * testsuite/30_threads/recursive_mutex/native_handle/1.cc: New. * testsuite/30_threads/recursive_mutex/cons: New. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: New. * testsuite/30_threads/recursive_mutex/cons/1.cc: New. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: New. * testsuite/30_threads/recursive_mutex/requirements: New. * testsuite/30_threads/recursive_mutex/requirements/typedefs.cc: New. * testsuite/30_threads/lock_guard: New. * testsuite/30_threads/lock_guard/requirements: New. * testsuite/30_threads/lock_guard/requirements/typedefs.cc: New. * testsuite/30_threads/lock_guard/requirements/ explicit_instantiation.cc: New. * testsuite/30_threads/headers: New. * testsuite/30_threads/headers/mutex: New. * testsuite/30_threads/headers/mutex/types_std_c++0x.cc: New. * testsuite/30_threads/headers/mutex/std_c++0x_neg.cc: New. * testsuite/30_threads/headers/condition_variable: New. * testsuite/30_threads/headers/condition_variable/ types_std_c++0x.cc: New. * testsuite/30_threads/headers/condition_variable/std_c++0x_neg.cc: New. * testsuite/30_threads/once_flag: New. * testsuite/30_threads/unique_lock: New. * testsuite/30_threads/unique_lock/requirements: New. * testsuite/30_threads/unique_lock/requirements/typedefs.cc: New. * testsuite/30_threads/unique_lock/requirements/ explicit_instantiation.cc: New. * testsuite/17_intro/headers/c++200x/all.cc: Add new includes. From-SVN: r135007
2008-05-06 23:11:47 +02:00
try_lock()
{
condition_variable: Use new deleted ctors. 2008-09-03 Chris Fairles <chris.fairles@gmail.com> * include/std/condition_variable: Use new deleted ctors. * include/std/mutex: Likewise plus implement timed_mutex, recursive_timed_mutex and call_once. * src/condition_variable.cc: Implement wait(). Use gthread types. Remove _GTHREADS_HAS_COND checks in favor of global _GLIBCXX_HAS_GTHREADS. * src/mutex.cc (call_once): Implementation using TLS with mutex fallback. * config/abi/pre/gnu.ver: Add exported symbols. * testsuite/lib/libstdc++.exp (check_v3_target_gthreads): New. * testsuite/lib/dg-options.exp (dg-require-gthreads): Likewise. * testsuite/30_threads/lock_guard/requirements/typedefs.cc: Use dg-require-gthreads and dg-require-cstdint. * testsuite/30_threads/lock_guard/requirements/ explicit_instantiation.cc: Likewise. * testsuite/30_threads/mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/mutex/cons/1.cc: Likewise. * testsuite/30_threads/mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/mutex/lock/1.cc: Likewise. * testsuite/30_threads/mutex/unlock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/recursive_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/recursive_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/recursive_mutex/lock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/unique_lock/requirements/ explicit_instantiation.cc: Likewise. * testsuite/30_threads/unique_lock/requirements/typedefs.cc: Likewise. * testsuite/30_threads/mutex/cons/assign_neg.cc: Also adjust dg-error lines for deleted members. * testsuite/30_threads/mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/call_once/once_flag.cc: New. * testsuite/30_threads/call_once/call_once1.cc: Likewise. * testsuite/30_threads/condition_variable/cons/1.cc: Likewise. * testsuite/30_threads/condition_variable/cons/copy_neg.cc: Likewise * testsuite/30_threads/condition_variable/cons/assign_neg.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/1.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/copy_neg.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/assign_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/timed_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_until/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_until/2.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/1.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/timed_mutex/lock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/2.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/3.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_until/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_until/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/lock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/lock/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/3.cc: Likewise. * testsuite/30_threads/unique_lock/modifiers/1.cc: Likewise. * testsuite/30_threads/unique_lock/modifiers/2.cc: Likewise. * testsuite/30_threads/unique_lock/cons/1.cc: Likewise. * testsuite/30_threads/unique_lock/cons/2.cc: Likewise. * testsuite/30_threads/unique_lock/cons/3.cc: Likewise. * testsuite/30_threads/unique_lock/cons/4.cc: Likewise. * testsuite/30_threads/unique_lock/cons/5.cc: Likewise. * testsuite/30_threads/unique_lock/cons/6.cc: Likewise. * testsuite/30_threads/unique_lock/locking/1.cc: Likewise. * testsuite/30_threads/unique_lock/locking/2.cc: Likewise. * testsuite/30_threads/unique_lock/locking/3.cc: Likewise. * testsuite/30_threads/unique_lock/locking/4.cc: Likewise. From-SVN: r139943
2008-09-03 19:46:09 +02:00
if (!_M_device)
__throw_system_error(int(errc::operation_not_permitted));
condition_variable (condition_variable): Remove _M_internal_mutex. 2009-02-09 Benjamin Kosnik <bkoz@redhat.com> * include/std/condition_variable (condition_variable): Remove _M_internal_mutex. Add private __native_type typedef. * src/condition_variable.cc (condition_variable::notify_one): Remove _M_internal_mutex use. Use typedef. (condition_variable::notify_all): Same. * include/std/mutex (mutex): Add private __native_type typedef. Use it. (recursive_mutex): Same. (timed_mutex): Same. (recursive_timed_mutex): Same. (once_flag): Make __native_type typedef private. * include/std/thread (this_thread): Add minimal markup. * testsuite/30_threads/condition_variable_any/cons/assign_neg.cc: Adjust line numbers. * testsuite/30_threads/condition_variable_any/cons/copy_neg.cc: Same. * testsuite/30_threads/mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/mutex/cons/copy_neg.cc: Same. * testsuite/30_threads/timed_mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/timed_mutex/cons/copy_neg.cc: Same. * testsuite/30_threads/thread/cons/assign_neg.cc: Same. * testsuite/30_threads/thread/cons/copy_neg.cc: Same. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: Same. * testsuite/30_threads/condition_variable/cons/assign_neg.cc: Same. * testsuite/30_threads/condition_variable/cons/copy_neg.cc: Same. * testsuite/30_threads/recursive_timed_mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/recursive_timed_mutex/cons/copy_neg.cc: Same. * testsuite/util/thread/all.h: Testsuite utilities for testing thread. * testsuite/30_threads/condition_variable_any/native_handle/ typesizes.cc: New. * testsuite/30_threads/mutex/native_handle/typesizes.cc: Same. * testsuite/30_threads/timed_mutex/native_handle/typesizes.cc: Same. * testsuite/30_threads/thread/native_handle/typesizes.cc: Same. * testsuite/30_threads/recursive_mutex/native_handle/typesizes.cc: Same. * testsuite/30_threads/condition_variable/native_handle/ typesizes.cc: Same. * testsuite/30_threads/recursive_timed_mutex/native_handle/ typesizes.cc: Same. From-SVN: r144053
2009-02-10 09:29:57 +01:00
else if (_M_owns)
__throw_system_error(int(errc::resource_deadlock_would_occur));
condition_variable (condition_variable): Remove _M_internal_mutex. 2009-02-09 Benjamin Kosnik <bkoz@redhat.com> * include/std/condition_variable (condition_variable): Remove _M_internal_mutex. Add private __native_type typedef. * src/condition_variable.cc (condition_variable::notify_one): Remove _M_internal_mutex use. Use typedef. (condition_variable::notify_all): Same. * include/std/mutex (mutex): Add private __native_type typedef. Use it. (recursive_mutex): Same. (timed_mutex): Same. (recursive_timed_mutex): Same. (once_flag): Make __native_type typedef private. * include/std/thread (this_thread): Add minimal markup. * testsuite/30_threads/condition_variable_any/cons/assign_neg.cc: Adjust line numbers. * testsuite/30_threads/condition_variable_any/cons/copy_neg.cc: Same. * testsuite/30_threads/mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/mutex/cons/copy_neg.cc: Same. * testsuite/30_threads/timed_mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/timed_mutex/cons/copy_neg.cc: Same. * testsuite/30_threads/thread/cons/assign_neg.cc: Same. * testsuite/30_threads/thread/cons/copy_neg.cc: Same. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: Same. * testsuite/30_threads/condition_variable/cons/assign_neg.cc: Same. * testsuite/30_threads/condition_variable/cons/copy_neg.cc: Same. * testsuite/30_threads/recursive_timed_mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/recursive_timed_mutex/cons/copy_neg.cc: Same. * testsuite/util/thread/all.h: Testsuite utilities for testing thread. * testsuite/30_threads/condition_variable_any/native_handle/ typesizes.cc: New. * testsuite/30_threads/mutex/native_handle/typesizes.cc: Same. * testsuite/30_threads/timed_mutex/native_handle/typesizes.cc: Same. * testsuite/30_threads/thread/native_handle/typesizes.cc: Same. * testsuite/30_threads/recursive_mutex/native_handle/typesizes.cc: Same. * testsuite/30_threads/condition_variable/native_handle/ typesizes.cc: Same. * testsuite/30_threads/recursive_timed_mutex/native_handle/ typesizes.cc: Same. From-SVN: r144053
2009-02-10 09:29:57 +01:00
else
condition_variable: Use new deleted ctors. 2008-09-03 Chris Fairles <chris.fairles@gmail.com> * include/std/condition_variable: Use new deleted ctors. * include/std/mutex: Likewise plus implement timed_mutex, recursive_timed_mutex and call_once. * src/condition_variable.cc: Implement wait(). Use gthread types. Remove _GTHREADS_HAS_COND checks in favor of global _GLIBCXX_HAS_GTHREADS. * src/mutex.cc (call_once): Implementation using TLS with mutex fallback. * config/abi/pre/gnu.ver: Add exported symbols. * testsuite/lib/libstdc++.exp (check_v3_target_gthreads): New. * testsuite/lib/dg-options.exp (dg-require-gthreads): Likewise. * testsuite/30_threads/lock_guard/requirements/typedefs.cc: Use dg-require-gthreads and dg-require-cstdint. * testsuite/30_threads/lock_guard/requirements/ explicit_instantiation.cc: Likewise. * testsuite/30_threads/mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/mutex/cons/1.cc: Likewise. * testsuite/30_threads/mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/mutex/lock/1.cc: Likewise. * testsuite/30_threads/mutex/unlock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/recursive_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/recursive_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/recursive_mutex/lock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/unique_lock/requirements/ explicit_instantiation.cc: Likewise. * testsuite/30_threads/unique_lock/requirements/typedefs.cc: Likewise. * testsuite/30_threads/mutex/cons/assign_neg.cc: Also adjust dg-error lines for deleted members. * testsuite/30_threads/mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/call_once/once_flag.cc: New. * testsuite/30_threads/call_once/call_once1.cc: Likewise. * testsuite/30_threads/condition_variable/cons/1.cc: Likewise. * testsuite/30_threads/condition_variable/cons/copy_neg.cc: Likewise * testsuite/30_threads/condition_variable/cons/assign_neg.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/1.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/copy_neg.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/assign_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/timed_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_until/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_until/2.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/1.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/timed_mutex/lock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/2.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/3.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_until/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_until/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/lock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/lock/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/3.cc: Likewise. * testsuite/30_threads/unique_lock/modifiers/1.cc: Likewise. * testsuite/30_threads/unique_lock/modifiers/2.cc: Likewise. * testsuite/30_threads/unique_lock/cons/1.cc: Likewise. * testsuite/30_threads/unique_lock/cons/2.cc: Likewise. * testsuite/30_threads/unique_lock/cons/3.cc: Likewise. * testsuite/30_threads/unique_lock/cons/4.cc: Likewise. * testsuite/30_threads/unique_lock/cons/5.cc: Likewise. * testsuite/30_threads/unique_lock/cons/6.cc: Likewise. * testsuite/30_threads/unique_lock/locking/1.cc: Likewise. * testsuite/30_threads/unique_lock/locking/2.cc: Likewise. * testsuite/30_threads/unique_lock/locking/3.cc: Likewise. * testsuite/30_threads/unique_lock/locking/4.cc: Likewise. From-SVN: r139943
2008-09-03 19:46:09 +02:00
{
condition_variable (condition_variable): Remove _M_internal_mutex. 2009-02-09 Benjamin Kosnik <bkoz@redhat.com> * include/std/condition_variable (condition_variable): Remove _M_internal_mutex. Add private __native_type typedef. * src/condition_variable.cc (condition_variable::notify_one): Remove _M_internal_mutex use. Use typedef. (condition_variable::notify_all): Same. * include/std/mutex (mutex): Add private __native_type typedef. Use it. (recursive_mutex): Same. (timed_mutex): Same. (recursive_timed_mutex): Same. (once_flag): Make __native_type typedef private. * include/std/thread (this_thread): Add minimal markup. * testsuite/30_threads/condition_variable_any/cons/assign_neg.cc: Adjust line numbers. * testsuite/30_threads/condition_variable_any/cons/copy_neg.cc: Same. * testsuite/30_threads/mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/mutex/cons/copy_neg.cc: Same. * testsuite/30_threads/timed_mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/timed_mutex/cons/copy_neg.cc: Same. * testsuite/30_threads/thread/cons/assign_neg.cc: Same. * testsuite/30_threads/thread/cons/copy_neg.cc: Same. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: Same. * testsuite/30_threads/condition_variable/cons/assign_neg.cc: Same. * testsuite/30_threads/condition_variable/cons/copy_neg.cc: Same. * testsuite/30_threads/recursive_timed_mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/recursive_timed_mutex/cons/copy_neg.cc: Same. * testsuite/util/thread/all.h: Testsuite utilities for testing thread. * testsuite/30_threads/condition_variable_any/native_handle/ typesizes.cc: New. * testsuite/30_threads/mutex/native_handle/typesizes.cc: Same. * testsuite/30_threads/timed_mutex/native_handle/typesizes.cc: Same. * testsuite/30_threads/thread/native_handle/typesizes.cc: Same. * testsuite/30_threads/recursive_mutex/native_handle/typesizes.cc: Same. * testsuite/30_threads/condition_variable/native_handle/ typesizes.cc: Same. * testsuite/30_threads/recursive_timed_mutex/native_handle/ typesizes.cc: Same. From-SVN: r144053
2009-02-10 09:29:57 +01:00
_M_owns = _M_device->try_lock();
condition_variable: Use new deleted ctors. 2008-09-03 Chris Fairles <chris.fairles@gmail.com> * include/std/condition_variable: Use new deleted ctors. * include/std/mutex: Likewise plus implement timed_mutex, recursive_timed_mutex and call_once. * src/condition_variable.cc: Implement wait(). Use gthread types. Remove _GTHREADS_HAS_COND checks in favor of global _GLIBCXX_HAS_GTHREADS. * src/mutex.cc (call_once): Implementation using TLS with mutex fallback. * config/abi/pre/gnu.ver: Add exported symbols. * testsuite/lib/libstdc++.exp (check_v3_target_gthreads): New. * testsuite/lib/dg-options.exp (dg-require-gthreads): Likewise. * testsuite/30_threads/lock_guard/requirements/typedefs.cc: Use dg-require-gthreads and dg-require-cstdint. * testsuite/30_threads/lock_guard/requirements/ explicit_instantiation.cc: Likewise. * testsuite/30_threads/mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/mutex/cons/1.cc: Likewise. * testsuite/30_threads/mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/mutex/lock/1.cc: Likewise. * testsuite/30_threads/mutex/unlock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/recursive_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/recursive_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/recursive_mutex/lock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/unique_lock/requirements/ explicit_instantiation.cc: Likewise. * testsuite/30_threads/unique_lock/requirements/typedefs.cc: Likewise. * testsuite/30_threads/mutex/cons/assign_neg.cc: Also adjust dg-error lines for deleted members. * testsuite/30_threads/mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/call_once/once_flag.cc: New. * testsuite/30_threads/call_once/call_once1.cc: Likewise. * testsuite/30_threads/condition_variable/cons/1.cc: Likewise. * testsuite/30_threads/condition_variable/cons/copy_neg.cc: Likewise * testsuite/30_threads/condition_variable/cons/assign_neg.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/1.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/copy_neg.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/assign_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/timed_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_until/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_until/2.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/1.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/timed_mutex/lock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/2.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/3.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_until/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_until/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/lock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/lock/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/3.cc: Likewise. * testsuite/30_threads/unique_lock/modifiers/1.cc: Likewise. * testsuite/30_threads/unique_lock/modifiers/2.cc: Likewise. * testsuite/30_threads/unique_lock/cons/1.cc: Likewise. * testsuite/30_threads/unique_lock/cons/2.cc: Likewise. * testsuite/30_threads/unique_lock/cons/3.cc: Likewise. * testsuite/30_threads/unique_lock/cons/4.cc: Likewise. * testsuite/30_threads/unique_lock/cons/5.cc: Likewise. * testsuite/30_threads/unique_lock/cons/6.cc: Likewise. * testsuite/30_threads/unique_lock/locking/1.cc: Likewise. * testsuite/30_threads/unique_lock/locking/2.cc: Likewise. * testsuite/30_threads/unique_lock/locking/3.cc: Likewise. * testsuite/30_threads/unique_lock/locking/4.cc: Likewise. From-SVN: r139943
2008-09-03 19:46:09 +02:00
return _M_owns;
}
condition_variable: New. 2008-05-06 Benjamin Kosnik <bkoz@redhat.com> * include/std/condition_variable: New. * include/std/mutex: New. * src/condition_variable.cc: New. * src/mutex.cc: New. * include/bits/functexcept.h: Add __throw_system_error varients. * src/functexcept.cc: Same. * config/abi/pre/gnu.ver: Add exports. * doc/xml/manual/using.xml: Add new includes. * doc/doxygen/user.cfg.in: Doxygen support. * doc/doxygen/doxygroups.cc: Same. * include/Makefile.am: Add mutex, condition_variable. * include/Makefile.in: Regenerated. * src/Makefile.am: Add mutex.cc, condition_variable.cc. * src/Makefile.in: Regenerated. * testsuite/30_threads: New. * testsuite/30_threads/lock_error: New. * testsuite/30_threads/mutex: New. * testsuite/30_threads/mutex/dest: New. * testsuite/30_threads/mutex/dest/destructor_locked.cc: New. * testsuite/30_threads/mutex/native_handle: New. * testsuite/30_threads/mutex/native_handle/1.cc: New. * testsuite/30_threads/mutex/cons: New. * testsuite/30_threads/mutex/cons/assign_neg.cc: New. * testsuite/30_threads/mutex/cons/1.cc: New. * testsuite/30_threads/mutex/cons/copy_neg.cc: New. * testsuite/30_threads/mutex/requirements: New. * testsuite/30_threads/mutex/requirements/typedefs.cc: New. * testsuite/30_threads/mutex/try_lock: New. * testsuite/30_threads/mutex/try_lock/1.cc: New. * testsuite/30_threads/mutex/try_lock/2.cc: New. * testsuite/30_threads/mutex/lock: New. * testsuite/30_threads/mutex/lock/1.cc: New. * testsuite/30_threads/mutex/unlock: New. * testsuite/30_threads/mutex/unlock/1.cc: New. * testsuite/30_threads/recursive_mutex: New. * testsuite/30_threads/recursive_mutex/dest: New. * testsuite/30_threads/recursive_mutex/dest/destructor_locked.cc: New. * testsuite/30_threads/recursive_mutex/native_handle: New. * testsuite/30_threads/recursive_mutex/native_handle/1.cc: New. * testsuite/30_threads/recursive_mutex/cons: New. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: New. * testsuite/30_threads/recursive_mutex/cons/1.cc: New. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: New. * testsuite/30_threads/recursive_mutex/requirements: New. * testsuite/30_threads/recursive_mutex/requirements/typedefs.cc: New. * testsuite/30_threads/lock_guard: New. * testsuite/30_threads/lock_guard/requirements: New. * testsuite/30_threads/lock_guard/requirements/typedefs.cc: New. * testsuite/30_threads/lock_guard/requirements/ explicit_instantiation.cc: New. * testsuite/30_threads/headers: New. * testsuite/30_threads/headers/mutex: New. * testsuite/30_threads/headers/mutex/types_std_c++0x.cc: New. * testsuite/30_threads/headers/mutex/std_c++0x_neg.cc: New. * testsuite/30_threads/headers/condition_variable: New. * testsuite/30_threads/headers/condition_variable/ types_std_c++0x.cc: New. * testsuite/30_threads/headers/condition_variable/std_c++0x_neg.cc: New. * testsuite/30_threads/once_flag: New. * testsuite/30_threads/unique_lock: New. * testsuite/30_threads/unique_lock/requirements: New. * testsuite/30_threads/unique_lock/requirements/typedefs.cc: New. * testsuite/30_threads/unique_lock/requirements/ explicit_instantiation.cc: New. * testsuite/17_intro/headers/c++200x/all.cc: Add new includes. From-SVN: r135007
2008-05-06 23:11:47 +02:00
}
condition_variable: Use new deleted ctors. 2008-09-03 Chris Fairles <chris.fairles@gmail.com> * include/std/condition_variable: Use new deleted ctors. * include/std/mutex: Likewise plus implement timed_mutex, recursive_timed_mutex and call_once. * src/condition_variable.cc: Implement wait(). Use gthread types. Remove _GTHREADS_HAS_COND checks in favor of global _GLIBCXX_HAS_GTHREADS. * src/mutex.cc (call_once): Implementation using TLS with mutex fallback. * config/abi/pre/gnu.ver: Add exported symbols. * testsuite/lib/libstdc++.exp (check_v3_target_gthreads): New. * testsuite/lib/dg-options.exp (dg-require-gthreads): Likewise. * testsuite/30_threads/lock_guard/requirements/typedefs.cc: Use dg-require-gthreads and dg-require-cstdint. * testsuite/30_threads/lock_guard/requirements/ explicit_instantiation.cc: Likewise. * testsuite/30_threads/mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/mutex/cons/1.cc: Likewise. * testsuite/30_threads/mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/mutex/lock/1.cc: Likewise. * testsuite/30_threads/mutex/unlock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/recursive_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/recursive_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/recursive_mutex/lock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/unique_lock/requirements/ explicit_instantiation.cc: Likewise. * testsuite/30_threads/unique_lock/requirements/typedefs.cc: Likewise. * testsuite/30_threads/mutex/cons/assign_neg.cc: Also adjust dg-error lines for deleted members. * testsuite/30_threads/mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/call_once/once_flag.cc: New. * testsuite/30_threads/call_once/call_once1.cc: Likewise. * testsuite/30_threads/condition_variable/cons/1.cc: Likewise. * testsuite/30_threads/condition_variable/cons/copy_neg.cc: Likewise * testsuite/30_threads/condition_variable/cons/assign_neg.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/1.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/copy_neg.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/assign_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/timed_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_until/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_until/2.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/1.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/timed_mutex/lock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/2.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/3.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_until/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_until/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/lock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/lock/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/3.cc: Likewise. * testsuite/30_threads/unique_lock/modifiers/1.cc: Likewise. * testsuite/30_threads/unique_lock/modifiers/2.cc: Likewise. * testsuite/30_threads/unique_lock/cons/1.cc: Likewise. * testsuite/30_threads/unique_lock/cons/2.cc: Likewise. * testsuite/30_threads/unique_lock/cons/3.cc: Likewise. * testsuite/30_threads/unique_lock/cons/4.cc: Likewise. * testsuite/30_threads/unique_lock/cons/5.cc: Likewise. * testsuite/30_threads/unique_lock/cons/6.cc: Likewise. * testsuite/30_threads/unique_lock/locking/1.cc: Likewise. * testsuite/30_threads/unique_lock/locking/2.cc: Likewise. * testsuite/30_threads/unique_lock/locking/3.cc: Likewise. * testsuite/30_threads/unique_lock/locking/4.cc: Likewise. From-SVN: r139943
2008-09-03 19:46:09 +02:00
template<typename _Clock, typename _Duration>
condition_variable (condition_variable): Remove _M_internal_mutex. 2009-02-09 Benjamin Kosnik <bkoz@redhat.com> * include/std/condition_variable (condition_variable): Remove _M_internal_mutex. Add private __native_type typedef. * src/condition_variable.cc (condition_variable::notify_one): Remove _M_internal_mutex use. Use typedef. (condition_variable::notify_all): Same. * include/std/mutex (mutex): Add private __native_type typedef. Use it. (recursive_mutex): Same. (timed_mutex): Same. (recursive_timed_mutex): Same. (once_flag): Make __native_type typedef private. * include/std/thread (this_thread): Add minimal markup. * testsuite/30_threads/condition_variable_any/cons/assign_neg.cc: Adjust line numbers. * testsuite/30_threads/condition_variable_any/cons/copy_neg.cc: Same. * testsuite/30_threads/mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/mutex/cons/copy_neg.cc: Same. * testsuite/30_threads/timed_mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/timed_mutex/cons/copy_neg.cc: Same. * testsuite/30_threads/thread/cons/assign_neg.cc: Same. * testsuite/30_threads/thread/cons/copy_neg.cc: Same. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: Same. * testsuite/30_threads/condition_variable/cons/assign_neg.cc: Same. * testsuite/30_threads/condition_variable/cons/copy_neg.cc: Same. * testsuite/30_threads/recursive_timed_mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/recursive_timed_mutex/cons/copy_neg.cc: Same. * testsuite/util/thread/all.h: Testsuite utilities for testing thread. * testsuite/30_threads/condition_variable_any/native_handle/ typesizes.cc: New. * testsuite/30_threads/mutex/native_handle/typesizes.cc: Same. * testsuite/30_threads/timed_mutex/native_handle/typesizes.cc: Same. * testsuite/30_threads/thread/native_handle/typesizes.cc: Same. * testsuite/30_threads/recursive_mutex/native_handle/typesizes.cc: Same. * testsuite/30_threads/condition_variable/native_handle/ typesizes.cc: Same. * testsuite/30_threads/recursive_timed_mutex/native_handle/ typesizes.cc: Same. From-SVN: r144053
2009-02-10 09:29:57 +01:00
bool
try_lock_until(const chrono::time_point<_Clock, _Duration>& __atime)
{
condition_variable: Use new deleted ctors. 2008-09-03 Chris Fairles <chris.fairles@gmail.com> * include/std/condition_variable: Use new deleted ctors. * include/std/mutex: Likewise plus implement timed_mutex, recursive_timed_mutex and call_once. * src/condition_variable.cc: Implement wait(). Use gthread types. Remove _GTHREADS_HAS_COND checks in favor of global _GLIBCXX_HAS_GTHREADS. * src/mutex.cc (call_once): Implementation using TLS with mutex fallback. * config/abi/pre/gnu.ver: Add exported symbols. * testsuite/lib/libstdc++.exp (check_v3_target_gthreads): New. * testsuite/lib/dg-options.exp (dg-require-gthreads): Likewise. * testsuite/30_threads/lock_guard/requirements/typedefs.cc: Use dg-require-gthreads and dg-require-cstdint. * testsuite/30_threads/lock_guard/requirements/ explicit_instantiation.cc: Likewise. * testsuite/30_threads/mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/mutex/cons/1.cc: Likewise. * testsuite/30_threads/mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/mutex/lock/1.cc: Likewise. * testsuite/30_threads/mutex/unlock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/recursive_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/recursive_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/recursive_mutex/lock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/unique_lock/requirements/ explicit_instantiation.cc: Likewise. * testsuite/30_threads/unique_lock/requirements/typedefs.cc: Likewise. * testsuite/30_threads/mutex/cons/assign_neg.cc: Also adjust dg-error lines for deleted members. * testsuite/30_threads/mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/call_once/once_flag.cc: New. * testsuite/30_threads/call_once/call_once1.cc: Likewise. * testsuite/30_threads/condition_variable/cons/1.cc: Likewise. * testsuite/30_threads/condition_variable/cons/copy_neg.cc: Likewise * testsuite/30_threads/condition_variable/cons/assign_neg.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/1.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/copy_neg.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/assign_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/timed_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_until/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_until/2.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/1.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/timed_mutex/lock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/2.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/3.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_until/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_until/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/lock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/lock/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/3.cc: Likewise. * testsuite/30_threads/unique_lock/modifiers/1.cc: Likewise. * testsuite/30_threads/unique_lock/modifiers/2.cc: Likewise. * testsuite/30_threads/unique_lock/cons/1.cc: Likewise. * testsuite/30_threads/unique_lock/cons/2.cc: Likewise. * testsuite/30_threads/unique_lock/cons/3.cc: Likewise. * testsuite/30_threads/unique_lock/cons/4.cc: Likewise. * testsuite/30_threads/unique_lock/cons/5.cc: Likewise. * testsuite/30_threads/unique_lock/cons/6.cc: Likewise. * testsuite/30_threads/unique_lock/locking/1.cc: Likewise. * testsuite/30_threads/unique_lock/locking/2.cc: Likewise. * testsuite/30_threads/unique_lock/locking/3.cc: Likewise. * testsuite/30_threads/unique_lock/locking/4.cc: Likewise. From-SVN: r139943
2008-09-03 19:46:09 +02:00
if (!_M_device)
__throw_system_error(int(errc::operation_not_permitted));
condition_variable: Use new deleted ctors. 2008-09-03 Chris Fairles <chris.fairles@gmail.com> * include/std/condition_variable: Use new deleted ctors. * include/std/mutex: Likewise plus implement timed_mutex, recursive_timed_mutex and call_once. * src/condition_variable.cc: Implement wait(). Use gthread types. Remove _GTHREADS_HAS_COND checks in favor of global _GLIBCXX_HAS_GTHREADS. * src/mutex.cc (call_once): Implementation using TLS with mutex fallback. * config/abi/pre/gnu.ver: Add exported symbols. * testsuite/lib/libstdc++.exp (check_v3_target_gthreads): New. * testsuite/lib/dg-options.exp (dg-require-gthreads): Likewise. * testsuite/30_threads/lock_guard/requirements/typedefs.cc: Use dg-require-gthreads and dg-require-cstdint. * testsuite/30_threads/lock_guard/requirements/ explicit_instantiation.cc: Likewise. * testsuite/30_threads/mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/mutex/cons/1.cc: Likewise. * testsuite/30_threads/mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/mutex/lock/1.cc: Likewise. * testsuite/30_threads/mutex/unlock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/recursive_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/recursive_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/recursive_mutex/lock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/unique_lock/requirements/ explicit_instantiation.cc: Likewise. * testsuite/30_threads/unique_lock/requirements/typedefs.cc: Likewise. * testsuite/30_threads/mutex/cons/assign_neg.cc: Also adjust dg-error lines for deleted members. * testsuite/30_threads/mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/call_once/once_flag.cc: New. * testsuite/30_threads/call_once/call_once1.cc: Likewise. * testsuite/30_threads/condition_variable/cons/1.cc: Likewise. * testsuite/30_threads/condition_variable/cons/copy_neg.cc: Likewise * testsuite/30_threads/condition_variable/cons/assign_neg.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/1.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/copy_neg.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/assign_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/timed_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_until/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_until/2.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/1.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/timed_mutex/lock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/2.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/3.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_until/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_until/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/lock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/lock/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/3.cc: Likewise. * testsuite/30_threads/unique_lock/modifiers/1.cc: Likewise. * testsuite/30_threads/unique_lock/modifiers/2.cc: Likewise. * testsuite/30_threads/unique_lock/cons/1.cc: Likewise. * testsuite/30_threads/unique_lock/cons/2.cc: Likewise. * testsuite/30_threads/unique_lock/cons/3.cc: Likewise. * testsuite/30_threads/unique_lock/cons/4.cc: Likewise. * testsuite/30_threads/unique_lock/cons/5.cc: Likewise. * testsuite/30_threads/unique_lock/cons/6.cc: Likewise. * testsuite/30_threads/unique_lock/locking/1.cc: Likewise. * testsuite/30_threads/unique_lock/locking/2.cc: Likewise. * testsuite/30_threads/unique_lock/locking/3.cc: Likewise. * testsuite/30_threads/unique_lock/locking/4.cc: Likewise. From-SVN: r139943
2008-09-03 19:46:09 +02:00
else if (_M_owns)
__throw_system_error(int(errc::resource_deadlock_would_occur));
condition_variable: Use new deleted ctors. 2008-09-03 Chris Fairles <chris.fairles@gmail.com> * include/std/condition_variable: Use new deleted ctors. * include/std/mutex: Likewise plus implement timed_mutex, recursive_timed_mutex and call_once. * src/condition_variable.cc: Implement wait(). Use gthread types. Remove _GTHREADS_HAS_COND checks in favor of global _GLIBCXX_HAS_GTHREADS. * src/mutex.cc (call_once): Implementation using TLS with mutex fallback. * config/abi/pre/gnu.ver: Add exported symbols. * testsuite/lib/libstdc++.exp (check_v3_target_gthreads): New. * testsuite/lib/dg-options.exp (dg-require-gthreads): Likewise. * testsuite/30_threads/lock_guard/requirements/typedefs.cc: Use dg-require-gthreads and dg-require-cstdint. * testsuite/30_threads/lock_guard/requirements/ explicit_instantiation.cc: Likewise. * testsuite/30_threads/mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/mutex/cons/1.cc: Likewise. * testsuite/30_threads/mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/mutex/lock/1.cc: Likewise. * testsuite/30_threads/mutex/unlock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/recursive_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/recursive_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/recursive_mutex/lock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/unique_lock/requirements/ explicit_instantiation.cc: Likewise. * testsuite/30_threads/unique_lock/requirements/typedefs.cc: Likewise. * testsuite/30_threads/mutex/cons/assign_neg.cc: Also adjust dg-error lines for deleted members. * testsuite/30_threads/mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/call_once/once_flag.cc: New. * testsuite/30_threads/call_once/call_once1.cc: Likewise. * testsuite/30_threads/condition_variable/cons/1.cc: Likewise. * testsuite/30_threads/condition_variable/cons/copy_neg.cc: Likewise * testsuite/30_threads/condition_variable/cons/assign_neg.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/1.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/copy_neg.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/assign_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/timed_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_until/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_until/2.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/1.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/timed_mutex/lock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/2.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/3.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_until/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_until/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/lock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/lock/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/3.cc: Likewise. * testsuite/30_threads/unique_lock/modifiers/1.cc: Likewise. * testsuite/30_threads/unique_lock/modifiers/2.cc: Likewise. * testsuite/30_threads/unique_lock/cons/1.cc: Likewise. * testsuite/30_threads/unique_lock/cons/2.cc: Likewise. * testsuite/30_threads/unique_lock/cons/3.cc: Likewise. * testsuite/30_threads/unique_lock/cons/4.cc: Likewise. * testsuite/30_threads/unique_lock/cons/5.cc: Likewise. * testsuite/30_threads/unique_lock/cons/6.cc: Likewise. * testsuite/30_threads/unique_lock/locking/1.cc: Likewise. * testsuite/30_threads/unique_lock/locking/2.cc: Likewise. * testsuite/30_threads/unique_lock/locking/3.cc: Likewise. * testsuite/30_threads/unique_lock/locking/4.cc: Likewise. From-SVN: r139943
2008-09-03 19:46:09 +02:00
else
{
_M_owns = _M_device->try_lock_until(__atime);
return _M_owns;
}
}
condition_variable (condition_variable): Remove _M_internal_mutex. 2009-02-09 Benjamin Kosnik <bkoz@redhat.com> * include/std/condition_variable (condition_variable): Remove _M_internal_mutex. Add private __native_type typedef. * src/condition_variable.cc (condition_variable::notify_one): Remove _M_internal_mutex use. Use typedef. (condition_variable::notify_all): Same. * include/std/mutex (mutex): Add private __native_type typedef. Use it. (recursive_mutex): Same. (timed_mutex): Same. (recursive_timed_mutex): Same. (once_flag): Make __native_type typedef private. * include/std/thread (this_thread): Add minimal markup. * testsuite/30_threads/condition_variable_any/cons/assign_neg.cc: Adjust line numbers. * testsuite/30_threads/condition_variable_any/cons/copy_neg.cc: Same. * testsuite/30_threads/mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/mutex/cons/copy_neg.cc: Same. * testsuite/30_threads/timed_mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/timed_mutex/cons/copy_neg.cc: Same. * testsuite/30_threads/thread/cons/assign_neg.cc: Same. * testsuite/30_threads/thread/cons/copy_neg.cc: Same. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: Same. * testsuite/30_threads/condition_variable/cons/assign_neg.cc: Same. * testsuite/30_threads/condition_variable/cons/copy_neg.cc: Same. * testsuite/30_threads/recursive_timed_mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/recursive_timed_mutex/cons/copy_neg.cc: Same. * testsuite/util/thread/all.h: Testsuite utilities for testing thread. * testsuite/30_threads/condition_variable_any/native_handle/ typesizes.cc: New. * testsuite/30_threads/mutex/native_handle/typesizes.cc: Same. * testsuite/30_threads/timed_mutex/native_handle/typesizes.cc: Same. * testsuite/30_threads/thread/native_handle/typesizes.cc: Same. * testsuite/30_threads/recursive_mutex/native_handle/typesizes.cc: Same. * testsuite/30_threads/condition_variable/native_handle/ typesizes.cc: Same. * testsuite/30_threads/recursive_timed_mutex/native_handle/ typesizes.cc: Same. From-SVN: r144053
2009-02-10 09:29:57 +01:00
condition_variable: Use new deleted ctors. 2008-09-03 Chris Fairles <chris.fairles@gmail.com> * include/std/condition_variable: Use new deleted ctors. * include/std/mutex: Likewise plus implement timed_mutex, recursive_timed_mutex and call_once. * src/condition_variable.cc: Implement wait(). Use gthread types. Remove _GTHREADS_HAS_COND checks in favor of global _GLIBCXX_HAS_GTHREADS. * src/mutex.cc (call_once): Implementation using TLS with mutex fallback. * config/abi/pre/gnu.ver: Add exported symbols. * testsuite/lib/libstdc++.exp (check_v3_target_gthreads): New. * testsuite/lib/dg-options.exp (dg-require-gthreads): Likewise. * testsuite/30_threads/lock_guard/requirements/typedefs.cc: Use dg-require-gthreads and dg-require-cstdint. * testsuite/30_threads/lock_guard/requirements/ explicit_instantiation.cc: Likewise. * testsuite/30_threads/mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/mutex/cons/1.cc: Likewise. * testsuite/30_threads/mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/mutex/lock/1.cc: Likewise. * testsuite/30_threads/mutex/unlock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/recursive_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/recursive_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/recursive_mutex/lock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/unique_lock/requirements/ explicit_instantiation.cc: Likewise. * testsuite/30_threads/unique_lock/requirements/typedefs.cc: Likewise. * testsuite/30_threads/mutex/cons/assign_neg.cc: Also adjust dg-error lines for deleted members. * testsuite/30_threads/mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/call_once/once_flag.cc: New. * testsuite/30_threads/call_once/call_once1.cc: Likewise. * testsuite/30_threads/condition_variable/cons/1.cc: Likewise. * testsuite/30_threads/condition_variable/cons/copy_neg.cc: Likewise * testsuite/30_threads/condition_variable/cons/assign_neg.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/1.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/copy_neg.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/assign_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/timed_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_until/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_until/2.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/1.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/timed_mutex/lock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/2.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/3.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_until/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_until/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/lock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/lock/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/3.cc: Likewise. * testsuite/30_threads/unique_lock/modifiers/1.cc: Likewise. * testsuite/30_threads/unique_lock/modifiers/2.cc: Likewise. * testsuite/30_threads/unique_lock/cons/1.cc: Likewise. * testsuite/30_threads/unique_lock/cons/2.cc: Likewise. * testsuite/30_threads/unique_lock/cons/3.cc: Likewise. * testsuite/30_threads/unique_lock/cons/4.cc: Likewise. * testsuite/30_threads/unique_lock/cons/5.cc: Likewise. * testsuite/30_threads/unique_lock/cons/6.cc: Likewise. * testsuite/30_threads/unique_lock/locking/1.cc: Likewise. * testsuite/30_threads/unique_lock/locking/2.cc: Likewise. * testsuite/30_threads/unique_lock/locking/3.cc: Likewise. * testsuite/30_threads/unique_lock/locking/4.cc: Likewise. From-SVN: r139943
2008-09-03 19:46:09 +02:00
template<typename _Rep, typename _Period>
bool
try_lock_for(const chrono::duration<_Rep, _Period>& __rtime)
condition_variable (condition_variable): Remove _M_internal_mutex. 2009-02-09 Benjamin Kosnik <bkoz@redhat.com> * include/std/condition_variable (condition_variable): Remove _M_internal_mutex. Add private __native_type typedef. * src/condition_variable.cc (condition_variable::notify_one): Remove _M_internal_mutex use. Use typedef. (condition_variable::notify_all): Same. * include/std/mutex (mutex): Add private __native_type typedef. Use it. (recursive_mutex): Same. (timed_mutex): Same. (recursive_timed_mutex): Same. (once_flag): Make __native_type typedef private. * include/std/thread (this_thread): Add minimal markup. * testsuite/30_threads/condition_variable_any/cons/assign_neg.cc: Adjust line numbers. * testsuite/30_threads/condition_variable_any/cons/copy_neg.cc: Same. * testsuite/30_threads/mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/mutex/cons/copy_neg.cc: Same. * testsuite/30_threads/timed_mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/timed_mutex/cons/copy_neg.cc: Same. * testsuite/30_threads/thread/cons/assign_neg.cc: Same. * testsuite/30_threads/thread/cons/copy_neg.cc: Same. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: Same. * testsuite/30_threads/condition_variable/cons/assign_neg.cc: Same. * testsuite/30_threads/condition_variable/cons/copy_neg.cc: Same. * testsuite/30_threads/recursive_timed_mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/recursive_timed_mutex/cons/copy_neg.cc: Same. * testsuite/util/thread/all.h: Testsuite utilities for testing thread. * testsuite/30_threads/condition_variable_any/native_handle/ typesizes.cc: New. * testsuite/30_threads/mutex/native_handle/typesizes.cc: Same. * testsuite/30_threads/timed_mutex/native_handle/typesizes.cc: Same. * testsuite/30_threads/thread/native_handle/typesizes.cc: Same. * testsuite/30_threads/recursive_mutex/native_handle/typesizes.cc: Same. * testsuite/30_threads/condition_variable/native_handle/ typesizes.cc: Same. * testsuite/30_threads/recursive_timed_mutex/native_handle/ typesizes.cc: Same. From-SVN: r144053
2009-02-10 09:29:57 +01:00
{
condition_variable: Use new deleted ctors. 2008-09-03 Chris Fairles <chris.fairles@gmail.com> * include/std/condition_variable: Use new deleted ctors. * include/std/mutex: Likewise plus implement timed_mutex, recursive_timed_mutex and call_once. * src/condition_variable.cc: Implement wait(). Use gthread types. Remove _GTHREADS_HAS_COND checks in favor of global _GLIBCXX_HAS_GTHREADS. * src/mutex.cc (call_once): Implementation using TLS with mutex fallback. * config/abi/pre/gnu.ver: Add exported symbols. * testsuite/lib/libstdc++.exp (check_v3_target_gthreads): New. * testsuite/lib/dg-options.exp (dg-require-gthreads): Likewise. * testsuite/30_threads/lock_guard/requirements/typedefs.cc: Use dg-require-gthreads and dg-require-cstdint. * testsuite/30_threads/lock_guard/requirements/ explicit_instantiation.cc: Likewise. * testsuite/30_threads/mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/mutex/cons/1.cc: Likewise. * testsuite/30_threads/mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/mutex/lock/1.cc: Likewise. * testsuite/30_threads/mutex/unlock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/recursive_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/recursive_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/recursive_mutex/lock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/unique_lock/requirements/ explicit_instantiation.cc: Likewise. * testsuite/30_threads/unique_lock/requirements/typedefs.cc: Likewise. * testsuite/30_threads/mutex/cons/assign_neg.cc: Also adjust dg-error lines for deleted members. * testsuite/30_threads/mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/call_once/once_flag.cc: New. * testsuite/30_threads/call_once/call_once1.cc: Likewise. * testsuite/30_threads/condition_variable/cons/1.cc: Likewise. * testsuite/30_threads/condition_variable/cons/copy_neg.cc: Likewise * testsuite/30_threads/condition_variable/cons/assign_neg.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/1.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/copy_neg.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/assign_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/timed_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_until/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_until/2.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/1.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/timed_mutex/lock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/2.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/3.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_until/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_until/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/lock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/lock/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/3.cc: Likewise. * testsuite/30_threads/unique_lock/modifiers/1.cc: Likewise. * testsuite/30_threads/unique_lock/modifiers/2.cc: Likewise. * testsuite/30_threads/unique_lock/cons/1.cc: Likewise. * testsuite/30_threads/unique_lock/cons/2.cc: Likewise. * testsuite/30_threads/unique_lock/cons/3.cc: Likewise. * testsuite/30_threads/unique_lock/cons/4.cc: Likewise. * testsuite/30_threads/unique_lock/cons/5.cc: Likewise. * testsuite/30_threads/unique_lock/cons/6.cc: Likewise. * testsuite/30_threads/unique_lock/locking/1.cc: Likewise. * testsuite/30_threads/unique_lock/locking/2.cc: Likewise. * testsuite/30_threads/unique_lock/locking/3.cc: Likewise. * testsuite/30_threads/unique_lock/locking/4.cc: Likewise. From-SVN: r139943
2008-09-03 19:46:09 +02:00
if (!_M_device)
__throw_system_error(int(errc::operation_not_permitted));
condition_variable: Use new deleted ctors. 2008-09-03 Chris Fairles <chris.fairles@gmail.com> * include/std/condition_variable: Use new deleted ctors. * include/std/mutex: Likewise plus implement timed_mutex, recursive_timed_mutex and call_once. * src/condition_variable.cc: Implement wait(). Use gthread types. Remove _GTHREADS_HAS_COND checks in favor of global _GLIBCXX_HAS_GTHREADS. * src/mutex.cc (call_once): Implementation using TLS with mutex fallback. * config/abi/pre/gnu.ver: Add exported symbols. * testsuite/lib/libstdc++.exp (check_v3_target_gthreads): New. * testsuite/lib/dg-options.exp (dg-require-gthreads): Likewise. * testsuite/30_threads/lock_guard/requirements/typedefs.cc: Use dg-require-gthreads and dg-require-cstdint. * testsuite/30_threads/lock_guard/requirements/ explicit_instantiation.cc: Likewise. * testsuite/30_threads/mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/mutex/cons/1.cc: Likewise. * testsuite/30_threads/mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/mutex/lock/1.cc: Likewise. * testsuite/30_threads/mutex/unlock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/recursive_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/recursive_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/recursive_mutex/lock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/unique_lock/requirements/ explicit_instantiation.cc: Likewise. * testsuite/30_threads/unique_lock/requirements/typedefs.cc: Likewise. * testsuite/30_threads/mutex/cons/assign_neg.cc: Also adjust dg-error lines for deleted members. * testsuite/30_threads/mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/call_once/once_flag.cc: New. * testsuite/30_threads/call_once/call_once1.cc: Likewise. * testsuite/30_threads/condition_variable/cons/1.cc: Likewise. * testsuite/30_threads/condition_variable/cons/copy_neg.cc: Likewise * testsuite/30_threads/condition_variable/cons/assign_neg.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/1.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/copy_neg.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/assign_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/timed_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_until/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_until/2.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/1.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/timed_mutex/lock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/2.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/3.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_until/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_until/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/lock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/lock/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/3.cc: Likewise. * testsuite/30_threads/unique_lock/modifiers/1.cc: Likewise. * testsuite/30_threads/unique_lock/modifiers/2.cc: Likewise. * testsuite/30_threads/unique_lock/cons/1.cc: Likewise. * testsuite/30_threads/unique_lock/cons/2.cc: Likewise. * testsuite/30_threads/unique_lock/cons/3.cc: Likewise. * testsuite/30_threads/unique_lock/cons/4.cc: Likewise. * testsuite/30_threads/unique_lock/cons/5.cc: Likewise. * testsuite/30_threads/unique_lock/cons/6.cc: Likewise. * testsuite/30_threads/unique_lock/locking/1.cc: Likewise. * testsuite/30_threads/unique_lock/locking/2.cc: Likewise. * testsuite/30_threads/unique_lock/locking/3.cc: Likewise. * testsuite/30_threads/unique_lock/locking/4.cc: Likewise. From-SVN: r139943
2008-09-03 19:46:09 +02:00
else if (_M_owns)
__throw_system_error(int(errc::resource_deadlock_would_occur));
condition_variable: Use new deleted ctors. 2008-09-03 Chris Fairles <chris.fairles@gmail.com> * include/std/condition_variable: Use new deleted ctors. * include/std/mutex: Likewise plus implement timed_mutex, recursive_timed_mutex and call_once. * src/condition_variable.cc: Implement wait(). Use gthread types. Remove _GTHREADS_HAS_COND checks in favor of global _GLIBCXX_HAS_GTHREADS. * src/mutex.cc (call_once): Implementation using TLS with mutex fallback. * config/abi/pre/gnu.ver: Add exported symbols. * testsuite/lib/libstdc++.exp (check_v3_target_gthreads): New. * testsuite/lib/dg-options.exp (dg-require-gthreads): Likewise. * testsuite/30_threads/lock_guard/requirements/typedefs.cc: Use dg-require-gthreads and dg-require-cstdint. * testsuite/30_threads/lock_guard/requirements/ explicit_instantiation.cc: Likewise. * testsuite/30_threads/mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/mutex/cons/1.cc: Likewise. * testsuite/30_threads/mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/mutex/lock/1.cc: Likewise. * testsuite/30_threads/mutex/unlock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/recursive_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/recursive_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/recursive_mutex/lock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/unique_lock/requirements/ explicit_instantiation.cc: Likewise. * testsuite/30_threads/unique_lock/requirements/typedefs.cc: Likewise. * testsuite/30_threads/mutex/cons/assign_neg.cc: Also adjust dg-error lines for deleted members. * testsuite/30_threads/mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/call_once/once_flag.cc: New. * testsuite/30_threads/call_once/call_once1.cc: Likewise. * testsuite/30_threads/condition_variable/cons/1.cc: Likewise. * testsuite/30_threads/condition_variable/cons/copy_neg.cc: Likewise * testsuite/30_threads/condition_variable/cons/assign_neg.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/1.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/copy_neg.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/assign_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/timed_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_until/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_until/2.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/1.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/timed_mutex/lock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/2.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/3.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_until/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_until/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/lock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/lock/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/3.cc: Likewise. * testsuite/30_threads/unique_lock/modifiers/1.cc: Likewise. * testsuite/30_threads/unique_lock/modifiers/2.cc: Likewise. * testsuite/30_threads/unique_lock/cons/1.cc: Likewise. * testsuite/30_threads/unique_lock/cons/2.cc: Likewise. * testsuite/30_threads/unique_lock/cons/3.cc: Likewise. * testsuite/30_threads/unique_lock/cons/4.cc: Likewise. * testsuite/30_threads/unique_lock/cons/5.cc: Likewise. * testsuite/30_threads/unique_lock/cons/6.cc: Likewise. * testsuite/30_threads/unique_lock/locking/1.cc: Likewise. * testsuite/30_threads/unique_lock/locking/2.cc: Likewise. * testsuite/30_threads/unique_lock/locking/3.cc: Likewise. * testsuite/30_threads/unique_lock/locking/4.cc: Likewise. From-SVN: r139943
2008-09-03 19:46:09 +02:00
else
{
_M_owns = _M_device->try_lock_for(__rtime);
return _M_owns;
}
}
void
condition_variable: New. 2008-05-06 Benjamin Kosnik <bkoz@redhat.com> * include/std/condition_variable: New. * include/std/mutex: New. * src/condition_variable.cc: New. * src/mutex.cc: New. * include/bits/functexcept.h: Add __throw_system_error varients. * src/functexcept.cc: Same. * config/abi/pre/gnu.ver: Add exports. * doc/xml/manual/using.xml: Add new includes. * doc/doxygen/user.cfg.in: Doxygen support. * doc/doxygen/doxygroups.cc: Same. * include/Makefile.am: Add mutex, condition_variable. * include/Makefile.in: Regenerated. * src/Makefile.am: Add mutex.cc, condition_variable.cc. * src/Makefile.in: Regenerated. * testsuite/30_threads: New. * testsuite/30_threads/lock_error: New. * testsuite/30_threads/mutex: New. * testsuite/30_threads/mutex/dest: New. * testsuite/30_threads/mutex/dest/destructor_locked.cc: New. * testsuite/30_threads/mutex/native_handle: New. * testsuite/30_threads/mutex/native_handle/1.cc: New. * testsuite/30_threads/mutex/cons: New. * testsuite/30_threads/mutex/cons/assign_neg.cc: New. * testsuite/30_threads/mutex/cons/1.cc: New. * testsuite/30_threads/mutex/cons/copy_neg.cc: New. * testsuite/30_threads/mutex/requirements: New. * testsuite/30_threads/mutex/requirements/typedefs.cc: New. * testsuite/30_threads/mutex/try_lock: New. * testsuite/30_threads/mutex/try_lock/1.cc: New. * testsuite/30_threads/mutex/try_lock/2.cc: New. * testsuite/30_threads/mutex/lock: New. * testsuite/30_threads/mutex/lock/1.cc: New. * testsuite/30_threads/mutex/unlock: New. * testsuite/30_threads/mutex/unlock/1.cc: New. * testsuite/30_threads/recursive_mutex: New. * testsuite/30_threads/recursive_mutex/dest: New. * testsuite/30_threads/recursive_mutex/dest/destructor_locked.cc: New. * testsuite/30_threads/recursive_mutex/native_handle: New. * testsuite/30_threads/recursive_mutex/native_handle/1.cc: New. * testsuite/30_threads/recursive_mutex/cons: New. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: New. * testsuite/30_threads/recursive_mutex/cons/1.cc: New. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: New. * testsuite/30_threads/recursive_mutex/requirements: New. * testsuite/30_threads/recursive_mutex/requirements/typedefs.cc: New. * testsuite/30_threads/lock_guard: New. * testsuite/30_threads/lock_guard/requirements: New. * testsuite/30_threads/lock_guard/requirements/typedefs.cc: New. * testsuite/30_threads/lock_guard/requirements/ explicit_instantiation.cc: New. * testsuite/30_threads/headers: New. * testsuite/30_threads/headers/mutex: New. * testsuite/30_threads/headers/mutex/types_std_c++0x.cc: New. * testsuite/30_threads/headers/mutex/std_c++0x_neg.cc: New. * testsuite/30_threads/headers/condition_variable: New. * testsuite/30_threads/headers/condition_variable/ types_std_c++0x.cc: New. * testsuite/30_threads/headers/condition_variable/std_c++0x_neg.cc: New. * testsuite/30_threads/once_flag: New. * testsuite/30_threads/unique_lock: New. * testsuite/30_threads/unique_lock/requirements: New. * testsuite/30_threads/unique_lock/requirements/typedefs.cc: New. * testsuite/30_threads/unique_lock/requirements/ explicit_instantiation.cc: New. * testsuite/17_intro/headers/c++200x/all.cc: Add new includes. From-SVN: r135007
2008-05-06 23:11:47 +02:00
unlock()
{
condition_variable (condition_variable): Remove _M_internal_mutex. 2009-02-09 Benjamin Kosnik <bkoz@redhat.com> * include/std/condition_variable (condition_variable): Remove _M_internal_mutex. Add private __native_type typedef. * src/condition_variable.cc (condition_variable::notify_one): Remove _M_internal_mutex use. Use typedef. (condition_variable::notify_all): Same. * include/std/mutex (mutex): Add private __native_type typedef. Use it. (recursive_mutex): Same. (timed_mutex): Same. (recursive_timed_mutex): Same. (once_flag): Make __native_type typedef private. * include/std/thread (this_thread): Add minimal markup. * testsuite/30_threads/condition_variable_any/cons/assign_neg.cc: Adjust line numbers. * testsuite/30_threads/condition_variable_any/cons/copy_neg.cc: Same. * testsuite/30_threads/mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/mutex/cons/copy_neg.cc: Same. * testsuite/30_threads/timed_mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/timed_mutex/cons/copy_neg.cc: Same. * testsuite/30_threads/thread/cons/assign_neg.cc: Same. * testsuite/30_threads/thread/cons/copy_neg.cc: Same. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: Same. * testsuite/30_threads/condition_variable/cons/assign_neg.cc: Same. * testsuite/30_threads/condition_variable/cons/copy_neg.cc: Same. * testsuite/30_threads/recursive_timed_mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/recursive_timed_mutex/cons/copy_neg.cc: Same. * testsuite/util/thread/all.h: Testsuite utilities for testing thread. * testsuite/30_threads/condition_variable_any/native_handle/ typesizes.cc: New. * testsuite/30_threads/mutex/native_handle/typesizes.cc: Same. * testsuite/30_threads/timed_mutex/native_handle/typesizes.cc: Same. * testsuite/30_threads/thread/native_handle/typesizes.cc: Same. * testsuite/30_threads/recursive_mutex/native_handle/typesizes.cc: Same. * testsuite/30_threads/condition_variable/native_handle/ typesizes.cc: Same. * testsuite/30_threads/recursive_timed_mutex/native_handle/ typesizes.cc: Same. From-SVN: r144053
2009-02-10 09:29:57 +01:00
if (!_M_owns)
__throw_system_error(int(errc::operation_not_permitted));
condition_variable (condition_variable): Remove _M_internal_mutex. 2009-02-09 Benjamin Kosnik <bkoz@redhat.com> * include/std/condition_variable (condition_variable): Remove _M_internal_mutex. Add private __native_type typedef. * src/condition_variable.cc (condition_variable::notify_one): Remove _M_internal_mutex use. Use typedef. (condition_variable::notify_all): Same. * include/std/mutex (mutex): Add private __native_type typedef. Use it. (recursive_mutex): Same. (timed_mutex): Same. (recursive_timed_mutex): Same. (once_flag): Make __native_type typedef private. * include/std/thread (this_thread): Add minimal markup. * testsuite/30_threads/condition_variable_any/cons/assign_neg.cc: Adjust line numbers. * testsuite/30_threads/condition_variable_any/cons/copy_neg.cc: Same. * testsuite/30_threads/mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/mutex/cons/copy_neg.cc: Same. * testsuite/30_threads/timed_mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/timed_mutex/cons/copy_neg.cc: Same. * testsuite/30_threads/thread/cons/assign_neg.cc: Same. * testsuite/30_threads/thread/cons/copy_neg.cc: Same. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: Same. * testsuite/30_threads/condition_variable/cons/assign_neg.cc: Same. * testsuite/30_threads/condition_variable/cons/copy_neg.cc: Same. * testsuite/30_threads/recursive_timed_mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/recursive_timed_mutex/cons/copy_neg.cc: Same. * testsuite/util/thread/all.h: Testsuite utilities for testing thread. * testsuite/30_threads/condition_variable_any/native_handle/ typesizes.cc: New. * testsuite/30_threads/mutex/native_handle/typesizes.cc: Same. * testsuite/30_threads/timed_mutex/native_handle/typesizes.cc: Same. * testsuite/30_threads/thread/native_handle/typesizes.cc: Same. * testsuite/30_threads/recursive_mutex/native_handle/typesizes.cc: Same. * testsuite/30_threads/condition_variable/native_handle/ typesizes.cc: Same. * testsuite/30_threads/recursive_timed_mutex/native_handle/ typesizes.cc: Same. From-SVN: r144053
2009-02-10 09:29:57 +01:00
else if (_M_device)
{
_M_device->unlock();
_M_owns = false;
}
condition_variable: New. 2008-05-06 Benjamin Kosnik <bkoz@redhat.com> * include/std/condition_variable: New. * include/std/mutex: New. * src/condition_variable.cc: New. * src/mutex.cc: New. * include/bits/functexcept.h: Add __throw_system_error varients. * src/functexcept.cc: Same. * config/abi/pre/gnu.ver: Add exports. * doc/xml/manual/using.xml: Add new includes. * doc/doxygen/user.cfg.in: Doxygen support. * doc/doxygen/doxygroups.cc: Same. * include/Makefile.am: Add mutex, condition_variable. * include/Makefile.in: Regenerated. * src/Makefile.am: Add mutex.cc, condition_variable.cc. * src/Makefile.in: Regenerated. * testsuite/30_threads: New. * testsuite/30_threads/lock_error: New. * testsuite/30_threads/mutex: New. * testsuite/30_threads/mutex/dest: New. * testsuite/30_threads/mutex/dest/destructor_locked.cc: New. * testsuite/30_threads/mutex/native_handle: New. * testsuite/30_threads/mutex/native_handle/1.cc: New. * testsuite/30_threads/mutex/cons: New. * testsuite/30_threads/mutex/cons/assign_neg.cc: New. * testsuite/30_threads/mutex/cons/1.cc: New. * testsuite/30_threads/mutex/cons/copy_neg.cc: New. * testsuite/30_threads/mutex/requirements: New. * testsuite/30_threads/mutex/requirements/typedefs.cc: New. * testsuite/30_threads/mutex/try_lock: New. * testsuite/30_threads/mutex/try_lock/1.cc: New. * testsuite/30_threads/mutex/try_lock/2.cc: New. * testsuite/30_threads/mutex/lock: New. * testsuite/30_threads/mutex/lock/1.cc: New. * testsuite/30_threads/mutex/unlock: New. * testsuite/30_threads/mutex/unlock/1.cc: New. * testsuite/30_threads/recursive_mutex: New. * testsuite/30_threads/recursive_mutex/dest: New. * testsuite/30_threads/recursive_mutex/dest/destructor_locked.cc: New. * testsuite/30_threads/recursive_mutex/native_handle: New. * testsuite/30_threads/recursive_mutex/native_handle/1.cc: New. * testsuite/30_threads/recursive_mutex/cons: New. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: New. * testsuite/30_threads/recursive_mutex/cons/1.cc: New. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: New. * testsuite/30_threads/recursive_mutex/requirements: New. * testsuite/30_threads/recursive_mutex/requirements/typedefs.cc: New. * testsuite/30_threads/lock_guard: New. * testsuite/30_threads/lock_guard/requirements: New. * testsuite/30_threads/lock_guard/requirements/typedefs.cc: New. * testsuite/30_threads/lock_guard/requirements/ explicit_instantiation.cc: New. * testsuite/30_threads/headers: New. * testsuite/30_threads/headers/mutex: New. * testsuite/30_threads/headers/mutex/types_std_c++0x.cc: New. * testsuite/30_threads/headers/mutex/std_c++0x_neg.cc: New. * testsuite/30_threads/headers/condition_variable: New. * testsuite/30_threads/headers/condition_variable/ types_std_c++0x.cc: New. * testsuite/30_threads/headers/condition_variable/std_c++0x_neg.cc: New. * testsuite/30_threads/once_flag: New. * testsuite/30_threads/unique_lock: New. * testsuite/30_threads/unique_lock/requirements: New. * testsuite/30_threads/unique_lock/requirements/typedefs.cc: New. * testsuite/30_threads/unique_lock/requirements/ explicit_instantiation.cc: New. * testsuite/17_intro/headers/c++200x/all.cc: Add new includes. From-SVN: r135007
2008-05-06 23:11:47 +02:00
}
condition_variable (condition_variable): Remove _M_internal_mutex. 2009-02-09 Benjamin Kosnik <bkoz@redhat.com> * include/std/condition_variable (condition_variable): Remove _M_internal_mutex. Add private __native_type typedef. * src/condition_variable.cc (condition_variable::notify_one): Remove _M_internal_mutex use. Use typedef. (condition_variable::notify_all): Same. * include/std/mutex (mutex): Add private __native_type typedef. Use it. (recursive_mutex): Same. (timed_mutex): Same. (recursive_timed_mutex): Same. (once_flag): Make __native_type typedef private. * include/std/thread (this_thread): Add minimal markup. * testsuite/30_threads/condition_variable_any/cons/assign_neg.cc: Adjust line numbers. * testsuite/30_threads/condition_variable_any/cons/copy_neg.cc: Same. * testsuite/30_threads/mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/mutex/cons/copy_neg.cc: Same. * testsuite/30_threads/timed_mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/timed_mutex/cons/copy_neg.cc: Same. * testsuite/30_threads/thread/cons/assign_neg.cc: Same. * testsuite/30_threads/thread/cons/copy_neg.cc: Same. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: Same. * testsuite/30_threads/condition_variable/cons/assign_neg.cc: Same. * testsuite/30_threads/condition_variable/cons/copy_neg.cc: Same. * testsuite/30_threads/recursive_timed_mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/recursive_timed_mutex/cons/copy_neg.cc: Same. * testsuite/util/thread/all.h: Testsuite utilities for testing thread. * testsuite/30_threads/condition_variable_any/native_handle/ typesizes.cc: New. * testsuite/30_threads/mutex/native_handle/typesizes.cc: Same. * testsuite/30_threads/timed_mutex/native_handle/typesizes.cc: Same. * testsuite/30_threads/thread/native_handle/typesizes.cc: Same. * testsuite/30_threads/recursive_mutex/native_handle/typesizes.cc: Same. * testsuite/30_threads/condition_variable/native_handle/ typesizes.cc: Same. * testsuite/30_threads/recursive_timed_mutex/native_handle/ typesizes.cc: Same. From-SVN: r144053
2009-02-10 09:29:57 +01:00
void
swap(unique_lock& __u) noexcept
condition_variable: Use new deleted ctors. 2008-09-03 Chris Fairles <chris.fairles@gmail.com> * include/std/condition_variable: Use new deleted ctors. * include/std/mutex: Likewise plus implement timed_mutex, recursive_timed_mutex and call_once. * src/condition_variable.cc: Implement wait(). Use gthread types. Remove _GTHREADS_HAS_COND checks in favor of global _GLIBCXX_HAS_GTHREADS. * src/mutex.cc (call_once): Implementation using TLS with mutex fallback. * config/abi/pre/gnu.ver: Add exported symbols. * testsuite/lib/libstdc++.exp (check_v3_target_gthreads): New. * testsuite/lib/dg-options.exp (dg-require-gthreads): Likewise. * testsuite/30_threads/lock_guard/requirements/typedefs.cc: Use dg-require-gthreads and dg-require-cstdint. * testsuite/30_threads/lock_guard/requirements/ explicit_instantiation.cc: Likewise. * testsuite/30_threads/mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/mutex/cons/1.cc: Likewise. * testsuite/30_threads/mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/mutex/lock/1.cc: Likewise. * testsuite/30_threads/mutex/unlock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/recursive_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/recursive_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/recursive_mutex/lock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/unique_lock/requirements/ explicit_instantiation.cc: Likewise. * testsuite/30_threads/unique_lock/requirements/typedefs.cc: Likewise. * testsuite/30_threads/mutex/cons/assign_neg.cc: Also adjust dg-error lines for deleted members. * testsuite/30_threads/mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/call_once/once_flag.cc: New. * testsuite/30_threads/call_once/call_once1.cc: Likewise. * testsuite/30_threads/condition_variable/cons/1.cc: Likewise. * testsuite/30_threads/condition_variable/cons/copy_neg.cc: Likewise * testsuite/30_threads/condition_variable/cons/assign_neg.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/1.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/copy_neg.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/assign_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/timed_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_until/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_until/2.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/1.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/timed_mutex/lock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/2.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/3.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_until/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_until/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/lock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/lock/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/3.cc: Likewise. * testsuite/30_threads/unique_lock/modifiers/1.cc: Likewise. * testsuite/30_threads/unique_lock/modifiers/2.cc: Likewise. * testsuite/30_threads/unique_lock/cons/1.cc: Likewise. * testsuite/30_threads/unique_lock/cons/2.cc: Likewise. * testsuite/30_threads/unique_lock/cons/3.cc: Likewise. * testsuite/30_threads/unique_lock/cons/4.cc: Likewise. * testsuite/30_threads/unique_lock/cons/5.cc: Likewise. * testsuite/30_threads/unique_lock/cons/6.cc: Likewise. * testsuite/30_threads/unique_lock/locking/1.cc: Likewise. * testsuite/30_threads/unique_lock/locking/2.cc: Likewise. * testsuite/30_threads/unique_lock/locking/3.cc: Likewise. * testsuite/30_threads/unique_lock/locking/4.cc: Likewise. From-SVN: r139943
2008-09-03 19:46:09 +02:00
{
std::swap(_M_device, __u._M_device);
std::swap(_M_owns, __u._M_owns);
}
condition_variable: New. 2008-05-06 Benjamin Kosnik <bkoz@redhat.com> * include/std/condition_variable: New. * include/std/mutex: New. * src/condition_variable.cc: New. * src/mutex.cc: New. * include/bits/functexcept.h: Add __throw_system_error varients. * src/functexcept.cc: Same. * config/abi/pre/gnu.ver: Add exports. * doc/xml/manual/using.xml: Add new includes. * doc/doxygen/user.cfg.in: Doxygen support. * doc/doxygen/doxygroups.cc: Same. * include/Makefile.am: Add mutex, condition_variable. * include/Makefile.in: Regenerated. * src/Makefile.am: Add mutex.cc, condition_variable.cc. * src/Makefile.in: Regenerated. * testsuite/30_threads: New. * testsuite/30_threads/lock_error: New. * testsuite/30_threads/mutex: New. * testsuite/30_threads/mutex/dest: New. * testsuite/30_threads/mutex/dest/destructor_locked.cc: New. * testsuite/30_threads/mutex/native_handle: New. * testsuite/30_threads/mutex/native_handle/1.cc: New. * testsuite/30_threads/mutex/cons: New. * testsuite/30_threads/mutex/cons/assign_neg.cc: New. * testsuite/30_threads/mutex/cons/1.cc: New. * testsuite/30_threads/mutex/cons/copy_neg.cc: New. * testsuite/30_threads/mutex/requirements: New. * testsuite/30_threads/mutex/requirements/typedefs.cc: New. * testsuite/30_threads/mutex/try_lock: New. * testsuite/30_threads/mutex/try_lock/1.cc: New. * testsuite/30_threads/mutex/try_lock/2.cc: New. * testsuite/30_threads/mutex/lock: New. * testsuite/30_threads/mutex/lock/1.cc: New. * testsuite/30_threads/mutex/unlock: New. * testsuite/30_threads/mutex/unlock/1.cc: New. * testsuite/30_threads/recursive_mutex: New. * testsuite/30_threads/recursive_mutex/dest: New. * testsuite/30_threads/recursive_mutex/dest/destructor_locked.cc: New. * testsuite/30_threads/recursive_mutex/native_handle: New. * testsuite/30_threads/recursive_mutex/native_handle/1.cc: New. * testsuite/30_threads/recursive_mutex/cons: New. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: New. * testsuite/30_threads/recursive_mutex/cons/1.cc: New. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: New. * testsuite/30_threads/recursive_mutex/requirements: New. * testsuite/30_threads/recursive_mutex/requirements/typedefs.cc: New. * testsuite/30_threads/lock_guard: New. * testsuite/30_threads/lock_guard/requirements: New. * testsuite/30_threads/lock_guard/requirements/typedefs.cc: New. * testsuite/30_threads/lock_guard/requirements/ explicit_instantiation.cc: New. * testsuite/30_threads/headers: New. * testsuite/30_threads/headers/mutex: New. * testsuite/30_threads/headers/mutex/types_std_c++0x.cc: New. * testsuite/30_threads/headers/mutex/std_c++0x_neg.cc: New. * testsuite/30_threads/headers/condition_variable: New. * testsuite/30_threads/headers/condition_variable/ types_std_c++0x.cc: New. * testsuite/30_threads/headers/condition_variable/std_c++0x_neg.cc: New. * testsuite/30_threads/once_flag: New. * testsuite/30_threads/unique_lock: New. * testsuite/30_threads/unique_lock/requirements: New. * testsuite/30_threads/unique_lock/requirements/typedefs.cc: New. * testsuite/30_threads/unique_lock/requirements/ explicit_instantiation.cc: New. * testsuite/17_intro/headers/c++200x/all.cc: Add new includes. From-SVN: r135007
2008-05-06 23:11:47 +02:00
mutex_type*
release() noexcept
{
mutex_type* __ret = _M_device;
condition_variable: Use new deleted ctors. 2008-09-03 Chris Fairles <chris.fairles@gmail.com> * include/std/condition_variable: Use new deleted ctors. * include/std/mutex: Likewise plus implement timed_mutex, recursive_timed_mutex and call_once. * src/condition_variable.cc: Implement wait(). Use gthread types. Remove _GTHREADS_HAS_COND checks in favor of global _GLIBCXX_HAS_GTHREADS. * src/mutex.cc (call_once): Implementation using TLS with mutex fallback. * config/abi/pre/gnu.ver: Add exported symbols. * testsuite/lib/libstdc++.exp (check_v3_target_gthreads): New. * testsuite/lib/dg-options.exp (dg-require-gthreads): Likewise. * testsuite/30_threads/lock_guard/requirements/typedefs.cc: Use dg-require-gthreads and dg-require-cstdint. * testsuite/30_threads/lock_guard/requirements/ explicit_instantiation.cc: Likewise. * testsuite/30_threads/mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/mutex/cons/1.cc: Likewise. * testsuite/30_threads/mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/mutex/lock/1.cc: Likewise. * testsuite/30_threads/mutex/unlock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/recursive_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/recursive_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/recursive_mutex/lock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/unique_lock/requirements/ explicit_instantiation.cc: Likewise. * testsuite/30_threads/unique_lock/requirements/typedefs.cc: Likewise. * testsuite/30_threads/mutex/cons/assign_neg.cc: Also adjust dg-error lines for deleted members. * testsuite/30_threads/mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/call_once/once_flag.cc: New. * testsuite/30_threads/call_once/call_once1.cc: Likewise. * testsuite/30_threads/condition_variable/cons/1.cc: Likewise. * testsuite/30_threads/condition_variable/cons/copy_neg.cc: Likewise * testsuite/30_threads/condition_variable/cons/assign_neg.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/1.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/copy_neg.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/assign_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/timed_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_until/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_until/2.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/1.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/timed_mutex/lock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/2.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/3.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_until/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_until/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/lock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/lock/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/3.cc: Likewise. * testsuite/30_threads/unique_lock/modifiers/1.cc: Likewise. * testsuite/30_threads/unique_lock/modifiers/2.cc: Likewise. * testsuite/30_threads/unique_lock/cons/1.cc: Likewise. * testsuite/30_threads/unique_lock/cons/2.cc: Likewise. * testsuite/30_threads/unique_lock/cons/3.cc: Likewise. * testsuite/30_threads/unique_lock/cons/4.cc: Likewise. * testsuite/30_threads/unique_lock/cons/5.cc: Likewise. * testsuite/30_threads/unique_lock/cons/6.cc: Likewise. * testsuite/30_threads/unique_lock/locking/1.cc: Likewise. * testsuite/30_threads/unique_lock/locking/2.cc: Likewise. * testsuite/30_threads/unique_lock/locking/3.cc: Likewise. * testsuite/30_threads/unique_lock/locking/4.cc: Likewise. From-SVN: r139943
2008-09-03 19:46:09 +02:00
_M_device = 0;
condition_variable: New. 2008-05-06 Benjamin Kosnik <bkoz@redhat.com> * include/std/condition_variable: New. * include/std/mutex: New. * src/condition_variable.cc: New. * src/mutex.cc: New. * include/bits/functexcept.h: Add __throw_system_error varients. * src/functexcept.cc: Same. * config/abi/pre/gnu.ver: Add exports. * doc/xml/manual/using.xml: Add new includes. * doc/doxygen/user.cfg.in: Doxygen support. * doc/doxygen/doxygroups.cc: Same. * include/Makefile.am: Add mutex, condition_variable. * include/Makefile.in: Regenerated. * src/Makefile.am: Add mutex.cc, condition_variable.cc. * src/Makefile.in: Regenerated. * testsuite/30_threads: New. * testsuite/30_threads/lock_error: New. * testsuite/30_threads/mutex: New. * testsuite/30_threads/mutex/dest: New. * testsuite/30_threads/mutex/dest/destructor_locked.cc: New. * testsuite/30_threads/mutex/native_handle: New. * testsuite/30_threads/mutex/native_handle/1.cc: New. * testsuite/30_threads/mutex/cons: New. * testsuite/30_threads/mutex/cons/assign_neg.cc: New. * testsuite/30_threads/mutex/cons/1.cc: New. * testsuite/30_threads/mutex/cons/copy_neg.cc: New. * testsuite/30_threads/mutex/requirements: New. * testsuite/30_threads/mutex/requirements/typedefs.cc: New. * testsuite/30_threads/mutex/try_lock: New. * testsuite/30_threads/mutex/try_lock/1.cc: New. * testsuite/30_threads/mutex/try_lock/2.cc: New. * testsuite/30_threads/mutex/lock: New. * testsuite/30_threads/mutex/lock/1.cc: New. * testsuite/30_threads/mutex/unlock: New. * testsuite/30_threads/mutex/unlock/1.cc: New. * testsuite/30_threads/recursive_mutex: New. * testsuite/30_threads/recursive_mutex/dest: New. * testsuite/30_threads/recursive_mutex/dest/destructor_locked.cc: New. * testsuite/30_threads/recursive_mutex/native_handle: New. * testsuite/30_threads/recursive_mutex/native_handle/1.cc: New. * testsuite/30_threads/recursive_mutex/cons: New. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: New. * testsuite/30_threads/recursive_mutex/cons/1.cc: New. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: New. * testsuite/30_threads/recursive_mutex/requirements: New. * testsuite/30_threads/recursive_mutex/requirements/typedefs.cc: New. * testsuite/30_threads/lock_guard: New. * testsuite/30_threads/lock_guard/requirements: New. * testsuite/30_threads/lock_guard/requirements/typedefs.cc: New. * testsuite/30_threads/lock_guard/requirements/ explicit_instantiation.cc: New. * testsuite/30_threads/headers: New. * testsuite/30_threads/headers/mutex: New. * testsuite/30_threads/headers/mutex/types_std_c++0x.cc: New. * testsuite/30_threads/headers/mutex/std_c++0x_neg.cc: New. * testsuite/30_threads/headers/condition_variable: New. * testsuite/30_threads/headers/condition_variable/ types_std_c++0x.cc: New. * testsuite/30_threads/headers/condition_variable/std_c++0x_neg.cc: New. * testsuite/30_threads/once_flag: New. * testsuite/30_threads/unique_lock: New. * testsuite/30_threads/unique_lock/requirements: New. * testsuite/30_threads/unique_lock/requirements/typedefs.cc: New. * testsuite/30_threads/unique_lock/requirements/ explicit_instantiation.cc: New. * testsuite/17_intro/headers/c++200x/all.cc: Add new includes. From-SVN: r135007
2008-05-06 23:11:47 +02:00
_M_owns = false;
return __ret;
}
bool
owns_lock() const noexcept
{ return _M_owns; }
condition_variable: New. 2008-05-06 Benjamin Kosnik <bkoz@redhat.com> * include/std/condition_variable: New. * include/std/mutex: New. * src/condition_variable.cc: New. * src/mutex.cc: New. * include/bits/functexcept.h: Add __throw_system_error varients. * src/functexcept.cc: Same. * config/abi/pre/gnu.ver: Add exports. * doc/xml/manual/using.xml: Add new includes. * doc/doxygen/user.cfg.in: Doxygen support. * doc/doxygen/doxygroups.cc: Same. * include/Makefile.am: Add mutex, condition_variable. * include/Makefile.in: Regenerated. * src/Makefile.am: Add mutex.cc, condition_variable.cc. * src/Makefile.in: Regenerated. * testsuite/30_threads: New. * testsuite/30_threads/lock_error: New. * testsuite/30_threads/mutex: New. * testsuite/30_threads/mutex/dest: New. * testsuite/30_threads/mutex/dest/destructor_locked.cc: New. * testsuite/30_threads/mutex/native_handle: New. * testsuite/30_threads/mutex/native_handle/1.cc: New. * testsuite/30_threads/mutex/cons: New. * testsuite/30_threads/mutex/cons/assign_neg.cc: New. * testsuite/30_threads/mutex/cons/1.cc: New. * testsuite/30_threads/mutex/cons/copy_neg.cc: New. * testsuite/30_threads/mutex/requirements: New. * testsuite/30_threads/mutex/requirements/typedefs.cc: New. * testsuite/30_threads/mutex/try_lock: New. * testsuite/30_threads/mutex/try_lock/1.cc: New. * testsuite/30_threads/mutex/try_lock/2.cc: New. * testsuite/30_threads/mutex/lock: New. * testsuite/30_threads/mutex/lock/1.cc: New. * testsuite/30_threads/mutex/unlock: New. * testsuite/30_threads/mutex/unlock/1.cc: New. * testsuite/30_threads/recursive_mutex: New. * testsuite/30_threads/recursive_mutex/dest: New. * testsuite/30_threads/recursive_mutex/dest/destructor_locked.cc: New. * testsuite/30_threads/recursive_mutex/native_handle: New. * testsuite/30_threads/recursive_mutex/native_handle/1.cc: New. * testsuite/30_threads/recursive_mutex/cons: New. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: New. * testsuite/30_threads/recursive_mutex/cons/1.cc: New. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: New. * testsuite/30_threads/recursive_mutex/requirements: New. * testsuite/30_threads/recursive_mutex/requirements/typedefs.cc: New. * testsuite/30_threads/lock_guard: New. * testsuite/30_threads/lock_guard/requirements: New. * testsuite/30_threads/lock_guard/requirements/typedefs.cc: New. * testsuite/30_threads/lock_guard/requirements/ explicit_instantiation.cc: New. * testsuite/30_threads/headers: New. * testsuite/30_threads/headers/mutex: New. * testsuite/30_threads/headers/mutex/types_std_c++0x.cc: New. * testsuite/30_threads/headers/mutex/std_c++0x_neg.cc: New. * testsuite/30_threads/headers/condition_variable: New. * testsuite/30_threads/headers/condition_variable/ types_std_c++0x.cc: New. * testsuite/30_threads/headers/condition_variable/std_c++0x_neg.cc: New. * testsuite/30_threads/once_flag: New. * testsuite/30_threads/unique_lock: New. * testsuite/30_threads/unique_lock/requirements: New. * testsuite/30_threads/unique_lock/requirements/typedefs.cc: New. * testsuite/30_threads/unique_lock/requirements/ explicit_instantiation.cc: New. * testsuite/17_intro/headers/c++200x/all.cc: Add new includes. From-SVN: r135007
2008-05-06 23:11:47 +02:00
explicit operator bool() const noexcept
{ return owns_lock(); }
condition_variable: New. 2008-05-06 Benjamin Kosnik <bkoz@redhat.com> * include/std/condition_variable: New. * include/std/mutex: New. * src/condition_variable.cc: New. * src/mutex.cc: New. * include/bits/functexcept.h: Add __throw_system_error varients. * src/functexcept.cc: Same. * config/abi/pre/gnu.ver: Add exports. * doc/xml/manual/using.xml: Add new includes. * doc/doxygen/user.cfg.in: Doxygen support. * doc/doxygen/doxygroups.cc: Same. * include/Makefile.am: Add mutex, condition_variable. * include/Makefile.in: Regenerated. * src/Makefile.am: Add mutex.cc, condition_variable.cc. * src/Makefile.in: Regenerated. * testsuite/30_threads: New. * testsuite/30_threads/lock_error: New. * testsuite/30_threads/mutex: New. * testsuite/30_threads/mutex/dest: New. * testsuite/30_threads/mutex/dest/destructor_locked.cc: New. * testsuite/30_threads/mutex/native_handle: New. * testsuite/30_threads/mutex/native_handle/1.cc: New. * testsuite/30_threads/mutex/cons: New. * testsuite/30_threads/mutex/cons/assign_neg.cc: New. * testsuite/30_threads/mutex/cons/1.cc: New. * testsuite/30_threads/mutex/cons/copy_neg.cc: New. * testsuite/30_threads/mutex/requirements: New. * testsuite/30_threads/mutex/requirements/typedefs.cc: New. * testsuite/30_threads/mutex/try_lock: New. * testsuite/30_threads/mutex/try_lock/1.cc: New. * testsuite/30_threads/mutex/try_lock/2.cc: New. * testsuite/30_threads/mutex/lock: New. * testsuite/30_threads/mutex/lock/1.cc: New. * testsuite/30_threads/mutex/unlock: New. * testsuite/30_threads/mutex/unlock/1.cc: New. * testsuite/30_threads/recursive_mutex: New. * testsuite/30_threads/recursive_mutex/dest: New. * testsuite/30_threads/recursive_mutex/dest/destructor_locked.cc: New. * testsuite/30_threads/recursive_mutex/native_handle: New. * testsuite/30_threads/recursive_mutex/native_handle/1.cc: New. * testsuite/30_threads/recursive_mutex/cons: New. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: New. * testsuite/30_threads/recursive_mutex/cons/1.cc: New. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: New. * testsuite/30_threads/recursive_mutex/requirements: New. * testsuite/30_threads/recursive_mutex/requirements/typedefs.cc: New. * testsuite/30_threads/lock_guard: New. * testsuite/30_threads/lock_guard/requirements: New. * testsuite/30_threads/lock_guard/requirements/typedefs.cc: New. * testsuite/30_threads/lock_guard/requirements/ explicit_instantiation.cc: New. * testsuite/30_threads/headers: New. * testsuite/30_threads/headers/mutex: New. * testsuite/30_threads/headers/mutex/types_std_c++0x.cc: New. * testsuite/30_threads/headers/mutex/std_c++0x_neg.cc: New. * testsuite/30_threads/headers/condition_variable: New. * testsuite/30_threads/headers/condition_variable/ types_std_c++0x.cc: New. * testsuite/30_threads/headers/condition_variable/std_c++0x_neg.cc: New. * testsuite/30_threads/once_flag: New. * testsuite/30_threads/unique_lock: New. * testsuite/30_threads/unique_lock/requirements: New. * testsuite/30_threads/unique_lock/requirements/typedefs.cc: New. * testsuite/30_threads/unique_lock/requirements/ explicit_instantiation.cc: New. * testsuite/17_intro/headers/c++200x/all.cc: Add new includes. From-SVN: r135007
2008-05-06 23:11:47 +02:00
mutex_type*
mutex() const noexcept
condition_variable: New. 2008-05-06 Benjamin Kosnik <bkoz@redhat.com> * include/std/condition_variable: New. * include/std/mutex: New. * src/condition_variable.cc: New. * src/mutex.cc: New. * include/bits/functexcept.h: Add __throw_system_error varients. * src/functexcept.cc: Same. * config/abi/pre/gnu.ver: Add exports. * doc/xml/manual/using.xml: Add new includes. * doc/doxygen/user.cfg.in: Doxygen support. * doc/doxygen/doxygroups.cc: Same. * include/Makefile.am: Add mutex, condition_variable. * include/Makefile.in: Regenerated. * src/Makefile.am: Add mutex.cc, condition_variable.cc. * src/Makefile.in: Regenerated. * testsuite/30_threads: New. * testsuite/30_threads/lock_error: New. * testsuite/30_threads/mutex: New. * testsuite/30_threads/mutex/dest: New. * testsuite/30_threads/mutex/dest/destructor_locked.cc: New. * testsuite/30_threads/mutex/native_handle: New. * testsuite/30_threads/mutex/native_handle/1.cc: New. * testsuite/30_threads/mutex/cons: New. * testsuite/30_threads/mutex/cons/assign_neg.cc: New. * testsuite/30_threads/mutex/cons/1.cc: New. * testsuite/30_threads/mutex/cons/copy_neg.cc: New. * testsuite/30_threads/mutex/requirements: New. * testsuite/30_threads/mutex/requirements/typedefs.cc: New. * testsuite/30_threads/mutex/try_lock: New. * testsuite/30_threads/mutex/try_lock/1.cc: New. * testsuite/30_threads/mutex/try_lock/2.cc: New. * testsuite/30_threads/mutex/lock: New. * testsuite/30_threads/mutex/lock/1.cc: New. * testsuite/30_threads/mutex/unlock: New. * testsuite/30_threads/mutex/unlock/1.cc: New. * testsuite/30_threads/recursive_mutex: New. * testsuite/30_threads/recursive_mutex/dest: New. * testsuite/30_threads/recursive_mutex/dest/destructor_locked.cc: New. * testsuite/30_threads/recursive_mutex/native_handle: New. * testsuite/30_threads/recursive_mutex/native_handle/1.cc: New. * testsuite/30_threads/recursive_mutex/cons: New. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: New. * testsuite/30_threads/recursive_mutex/cons/1.cc: New. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: New. * testsuite/30_threads/recursive_mutex/requirements: New. * testsuite/30_threads/recursive_mutex/requirements/typedefs.cc: New. * testsuite/30_threads/lock_guard: New. * testsuite/30_threads/lock_guard/requirements: New. * testsuite/30_threads/lock_guard/requirements/typedefs.cc: New. * testsuite/30_threads/lock_guard/requirements/ explicit_instantiation.cc: New. * testsuite/30_threads/headers: New. * testsuite/30_threads/headers/mutex: New. * testsuite/30_threads/headers/mutex/types_std_c++0x.cc: New. * testsuite/30_threads/headers/mutex/std_c++0x_neg.cc: New. * testsuite/30_threads/headers/condition_variable: New. * testsuite/30_threads/headers/condition_variable/ types_std_c++0x.cc: New. * testsuite/30_threads/headers/condition_variable/std_c++0x_neg.cc: New. * testsuite/30_threads/once_flag: New. * testsuite/30_threads/unique_lock: New. * testsuite/30_threads/unique_lock/requirements: New. * testsuite/30_threads/unique_lock/requirements/typedefs.cc: New. * testsuite/30_threads/unique_lock/requirements/ explicit_instantiation.cc: New. * testsuite/17_intro/headers/c++200x/all.cc: Add new includes. From-SVN: r135007
2008-05-06 23:11:47 +02:00
{ return _M_device; }
private:
mutex_type* _M_device;
bool _M_owns; // XXX use atomic_bool
condition_variable: New. 2008-05-06 Benjamin Kosnik <bkoz@redhat.com> * include/std/condition_variable: New. * include/std/mutex: New. * src/condition_variable.cc: New. * src/mutex.cc: New. * include/bits/functexcept.h: Add __throw_system_error varients. * src/functexcept.cc: Same. * config/abi/pre/gnu.ver: Add exports. * doc/xml/manual/using.xml: Add new includes. * doc/doxygen/user.cfg.in: Doxygen support. * doc/doxygen/doxygroups.cc: Same. * include/Makefile.am: Add mutex, condition_variable. * include/Makefile.in: Regenerated. * src/Makefile.am: Add mutex.cc, condition_variable.cc. * src/Makefile.in: Regenerated. * testsuite/30_threads: New. * testsuite/30_threads/lock_error: New. * testsuite/30_threads/mutex: New. * testsuite/30_threads/mutex/dest: New. * testsuite/30_threads/mutex/dest/destructor_locked.cc: New. * testsuite/30_threads/mutex/native_handle: New. * testsuite/30_threads/mutex/native_handle/1.cc: New. * testsuite/30_threads/mutex/cons: New. * testsuite/30_threads/mutex/cons/assign_neg.cc: New. * testsuite/30_threads/mutex/cons/1.cc: New. * testsuite/30_threads/mutex/cons/copy_neg.cc: New. * testsuite/30_threads/mutex/requirements: New. * testsuite/30_threads/mutex/requirements/typedefs.cc: New. * testsuite/30_threads/mutex/try_lock: New. * testsuite/30_threads/mutex/try_lock/1.cc: New. * testsuite/30_threads/mutex/try_lock/2.cc: New. * testsuite/30_threads/mutex/lock: New. * testsuite/30_threads/mutex/lock/1.cc: New. * testsuite/30_threads/mutex/unlock: New. * testsuite/30_threads/mutex/unlock/1.cc: New. * testsuite/30_threads/recursive_mutex: New. * testsuite/30_threads/recursive_mutex/dest: New. * testsuite/30_threads/recursive_mutex/dest/destructor_locked.cc: New. * testsuite/30_threads/recursive_mutex/native_handle: New. * testsuite/30_threads/recursive_mutex/native_handle/1.cc: New. * testsuite/30_threads/recursive_mutex/cons: New. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: New. * testsuite/30_threads/recursive_mutex/cons/1.cc: New. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: New. * testsuite/30_threads/recursive_mutex/requirements: New. * testsuite/30_threads/recursive_mutex/requirements/typedefs.cc: New. * testsuite/30_threads/lock_guard: New. * testsuite/30_threads/lock_guard/requirements: New. * testsuite/30_threads/lock_guard/requirements/typedefs.cc: New. * testsuite/30_threads/lock_guard/requirements/ explicit_instantiation.cc: New. * testsuite/30_threads/headers: New. * testsuite/30_threads/headers/mutex: New. * testsuite/30_threads/headers/mutex/types_std_c++0x.cc: New. * testsuite/30_threads/headers/mutex/std_c++0x_neg.cc: New. * testsuite/30_threads/headers/condition_variable: New. * testsuite/30_threads/headers/condition_variable/ types_std_c++0x.cc: New. * testsuite/30_threads/headers/condition_variable/std_c++0x_neg.cc: New. * testsuite/30_threads/once_flag: New. * testsuite/30_threads/unique_lock: New. * testsuite/30_threads/unique_lock/requirements: New. * testsuite/30_threads/unique_lock/requirements/typedefs.cc: New. * testsuite/30_threads/unique_lock/requirements/ explicit_instantiation.cc: New. * testsuite/17_intro/headers/c++200x/all.cc: Add new includes. From-SVN: r135007
2008-05-06 23:11:47 +02:00
};
/// Partial specialization for unique_lock objects.
condition_variable: New. 2008-05-06 Benjamin Kosnik <bkoz@redhat.com> * include/std/condition_variable: New. * include/std/mutex: New. * src/condition_variable.cc: New. * src/mutex.cc: New. * include/bits/functexcept.h: Add __throw_system_error varients. * src/functexcept.cc: Same. * config/abi/pre/gnu.ver: Add exports. * doc/xml/manual/using.xml: Add new includes. * doc/doxygen/user.cfg.in: Doxygen support. * doc/doxygen/doxygroups.cc: Same. * include/Makefile.am: Add mutex, condition_variable. * include/Makefile.in: Regenerated. * src/Makefile.am: Add mutex.cc, condition_variable.cc. * src/Makefile.in: Regenerated. * testsuite/30_threads: New. * testsuite/30_threads/lock_error: New. * testsuite/30_threads/mutex: New. * testsuite/30_threads/mutex/dest: New. * testsuite/30_threads/mutex/dest/destructor_locked.cc: New. * testsuite/30_threads/mutex/native_handle: New. * testsuite/30_threads/mutex/native_handle/1.cc: New. * testsuite/30_threads/mutex/cons: New. * testsuite/30_threads/mutex/cons/assign_neg.cc: New. * testsuite/30_threads/mutex/cons/1.cc: New. * testsuite/30_threads/mutex/cons/copy_neg.cc: New. * testsuite/30_threads/mutex/requirements: New. * testsuite/30_threads/mutex/requirements/typedefs.cc: New. * testsuite/30_threads/mutex/try_lock: New. * testsuite/30_threads/mutex/try_lock/1.cc: New. * testsuite/30_threads/mutex/try_lock/2.cc: New. * testsuite/30_threads/mutex/lock: New. * testsuite/30_threads/mutex/lock/1.cc: New. * testsuite/30_threads/mutex/unlock: New. * testsuite/30_threads/mutex/unlock/1.cc: New. * testsuite/30_threads/recursive_mutex: New. * testsuite/30_threads/recursive_mutex/dest: New. * testsuite/30_threads/recursive_mutex/dest/destructor_locked.cc: New. * testsuite/30_threads/recursive_mutex/native_handle: New. * testsuite/30_threads/recursive_mutex/native_handle/1.cc: New. * testsuite/30_threads/recursive_mutex/cons: New. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: New. * testsuite/30_threads/recursive_mutex/cons/1.cc: New. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: New. * testsuite/30_threads/recursive_mutex/requirements: New. * testsuite/30_threads/recursive_mutex/requirements/typedefs.cc: New. * testsuite/30_threads/lock_guard: New. * testsuite/30_threads/lock_guard/requirements: New. * testsuite/30_threads/lock_guard/requirements/typedefs.cc: New. * testsuite/30_threads/lock_guard/requirements/ explicit_instantiation.cc: New. * testsuite/30_threads/headers: New. * testsuite/30_threads/headers/mutex: New. * testsuite/30_threads/headers/mutex/types_std_c++0x.cc: New. * testsuite/30_threads/headers/mutex/std_c++0x_neg.cc: New. * testsuite/30_threads/headers/condition_variable: New. * testsuite/30_threads/headers/condition_variable/ types_std_c++0x.cc: New. * testsuite/30_threads/headers/condition_variable/std_c++0x_neg.cc: New. * testsuite/30_threads/once_flag: New. * testsuite/30_threads/unique_lock: New. * testsuite/30_threads/unique_lock/requirements: New. * testsuite/30_threads/unique_lock/requirements/typedefs.cc: New. * testsuite/30_threads/unique_lock/requirements/ explicit_instantiation.cc: New. * testsuite/17_intro/headers/c++200x/all.cc: Add new includes. From-SVN: r135007
2008-05-06 23:11:47 +02:00
template<typename _Mutex>
condition_variable: Use new deleted ctors. 2008-09-03 Chris Fairles <chris.fairles@gmail.com> * include/std/condition_variable: Use new deleted ctors. * include/std/mutex: Likewise plus implement timed_mutex, recursive_timed_mutex and call_once. * src/condition_variable.cc: Implement wait(). Use gthread types. Remove _GTHREADS_HAS_COND checks in favor of global _GLIBCXX_HAS_GTHREADS. * src/mutex.cc (call_once): Implementation using TLS with mutex fallback. * config/abi/pre/gnu.ver: Add exported symbols. * testsuite/lib/libstdc++.exp (check_v3_target_gthreads): New. * testsuite/lib/dg-options.exp (dg-require-gthreads): Likewise. * testsuite/30_threads/lock_guard/requirements/typedefs.cc: Use dg-require-gthreads and dg-require-cstdint. * testsuite/30_threads/lock_guard/requirements/ explicit_instantiation.cc: Likewise. * testsuite/30_threads/mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/mutex/cons/1.cc: Likewise. * testsuite/30_threads/mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/mutex/lock/1.cc: Likewise. * testsuite/30_threads/mutex/unlock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/recursive_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/recursive_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/recursive_mutex/lock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/unique_lock/requirements/ explicit_instantiation.cc: Likewise. * testsuite/30_threads/unique_lock/requirements/typedefs.cc: Likewise. * testsuite/30_threads/mutex/cons/assign_neg.cc: Also adjust dg-error lines for deleted members. * testsuite/30_threads/mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/call_once/once_flag.cc: New. * testsuite/30_threads/call_once/call_once1.cc: Likewise. * testsuite/30_threads/condition_variable/cons/1.cc: Likewise. * testsuite/30_threads/condition_variable/cons/copy_neg.cc: Likewise * testsuite/30_threads/condition_variable/cons/assign_neg.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/1.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/copy_neg.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/assign_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/timed_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_until/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_until/2.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/1.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/timed_mutex/lock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/2.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/3.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_until/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_until/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/lock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/lock/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/3.cc: Likewise. * testsuite/30_threads/unique_lock/modifiers/1.cc: Likewise. * testsuite/30_threads/unique_lock/modifiers/2.cc: Likewise. * testsuite/30_threads/unique_lock/cons/1.cc: Likewise. * testsuite/30_threads/unique_lock/cons/2.cc: Likewise. * testsuite/30_threads/unique_lock/cons/3.cc: Likewise. * testsuite/30_threads/unique_lock/cons/4.cc: Likewise. * testsuite/30_threads/unique_lock/cons/5.cc: Likewise. * testsuite/30_threads/unique_lock/cons/6.cc: Likewise. * testsuite/30_threads/unique_lock/locking/1.cc: Likewise. * testsuite/30_threads/unique_lock/locking/2.cc: Likewise. * testsuite/30_threads/unique_lock/locking/3.cc: Likewise. * testsuite/30_threads/unique_lock/locking/4.cc: Likewise. From-SVN: r139943
2008-09-03 19:46:09 +02:00
inline void
swap(unique_lock<_Mutex>& __x, unique_lock<_Mutex>& __y) noexcept
condition_variable: Use new deleted ctors. 2008-09-03 Chris Fairles <chris.fairles@gmail.com> * include/std/condition_variable: Use new deleted ctors. * include/std/mutex: Likewise plus implement timed_mutex, recursive_timed_mutex and call_once. * src/condition_variable.cc: Implement wait(). Use gthread types. Remove _GTHREADS_HAS_COND checks in favor of global _GLIBCXX_HAS_GTHREADS. * src/mutex.cc (call_once): Implementation using TLS with mutex fallback. * config/abi/pre/gnu.ver: Add exported symbols. * testsuite/lib/libstdc++.exp (check_v3_target_gthreads): New. * testsuite/lib/dg-options.exp (dg-require-gthreads): Likewise. * testsuite/30_threads/lock_guard/requirements/typedefs.cc: Use dg-require-gthreads and dg-require-cstdint. * testsuite/30_threads/lock_guard/requirements/ explicit_instantiation.cc: Likewise. * testsuite/30_threads/mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/mutex/cons/1.cc: Likewise. * testsuite/30_threads/mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/mutex/lock/1.cc: Likewise. * testsuite/30_threads/mutex/unlock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/recursive_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/recursive_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/recursive_mutex/lock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/unique_lock/requirements/ explicit_instantiation.cc: Likewise. * testsuite/30_threads/unique_lock/requirements/typedefs.cc: Likewise. * testsuite/30_threads/mutex/cons/assign_neg.cc: Also adjust dg-error lines for deleted members. * testsuite/30_threads/mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/call_once/once_flag.cc: New. * testsuite/30_threads/call_once/call_once1.cc: Likewise. * testsuite/30_threads/condition_variable/cons/1.cc: Likewise. * testsuite/30_threads/condition_variable/cons/copy_neg.cc: Likewise * testsuite/30_threads/condition_variable/cons/assign_neg.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/1.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/copy_neg.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/assign_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/timed_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_until/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_until/2.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/1.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/timed_mutex/lock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/2.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/3.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_until/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_until/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/lock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/lock/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/3.cc: Likewise. * testsuite/30_threads/unique_lock/modifiers/1.cc: Likewise. * testsuite/30_threads/unique_lock/modifiers/2.cc: Likewise. * testsuite/30_threads/unique_lock/cons/1.cc: Likewise. * testsuite/30_threads/unique_lock/cons/2.cc: Likewise. * testsuite/30_threads/unique_lock/cons/3.cc: Likewise. * testsuite/30_threads/unique_lock/cons/4.cc: Likewise. * testsuite/30_threads/unique_lock/cons/5.cc: Likewise. * testsuite/30_threads/unique_lock/cons/6.cc: Likewise. * testsuite/30_threads/unique_lock/locking/1.cc: Likewise. * testsuite/30_threads/unique_lock/locking/2.cc: Likewise. * testsuite/30_threads/unique_lock/locking/3.cc: Likewise. * testsuite/30_threads/unique_lock/locking/4.cc: Likewise. From-SVN: r139943
2008-09-03 19:46:09 +02:00
{ __x.swap(__y); }
condition_variable: New. 2008-05-06 Benjamin Kosnik <bkoz@redhat.com> * include/std/condition_variable: New. * include/std/mutex: New. * src/condition_variable.cc: New. * src/mutex.cc: New. * include/bits/functexcept.h: Add __throw_system_error varients. * src/functexcept.cc: Same. * config/abi/pre/gnu.ver: Add exports. * doc/xml/manual/using.xml: Add new includes. * doc/doxygen/user.cfg.in: Doxygen support. * doc/doxygen/doxygroups.cc: Same. * include/Makefile.am: Add mutex, condition_variable. * include/Makefile.in: Regenerated. * src/Makefile.am: Add mutex.cc, condition_variable.cc. * src/Makefile.in: Regenerated. * testsuite/30_threads: New. * testsuite/30_threads/lock_error: New. * testsuite/30_threads/mutex: New. * testsuite/30_threads/mutex/dest: New. * testsuite/30_threads/mutex/dest/destructor_locked.cc: New. * testsuite/30_threads/mutex/native_handle: New. * testsuite/30_threads/mutex/native_handle/1.cc: New. * testsuite/30_threads/mutex/cons: New. * testsuite/30_threads/mutex/cons/assign_neg.cc: New. * testsuite/30_threads/mutex/cons/1.cc: New. * testsuite/30_threads/mutex/cons/copy_neg.cc: New. * testsuite/30_threads/mutex/requirements: New. * testsuite/30_threads/mutex/requirements/typedefs.cc: New. * testsuite/30_threads/mutex/try_lock: New. * testsuite/30_threads/mutex/try_lock/1.cc: New. * testsuite/30_threads/mutex/try_lock/2.cc: New. * testsuite/30_threads/mutex/lock: New. * testsuite/30_threads/mutex/lock/1.cc: New. * testsuite/30_threads/mutex/unlock: New. * testsuite/30_threads/mutex/unlock/1.cc: New. * testsuite/30_threads/recursive_mutex: New. * testsuite/30_threads/recursive_mutex/dest: New. * testsuite/30_threads/recursive_mutex/dest/destructor_locked.cc: New. * testsuite/30_threads/recursive_mutex/native_handle: New. * testsuite/30_threads/recursive_mutex/native_handle/1.cc: New. * testsuite/30_threads/recursive_mutex/cons: New. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: New. * testsuite/30_threads/recursive_mutex/cons/1.cc: New. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: New. * testsuite/30_threads/recursive_mutex/requirements: New. * testsuite/30_threads/recursive_mutex/requirements/typedefs.cc: New. * testsuite/30_threads/lock_guard: New. * testsuite/30_threads/lock_guard/requirements: New. * testsuite/30_threads/lock_guard/requirements/typedefs.cc: New. * testsuite/30_threads/lock_guard/requirements/ explicit_instantiation.cc: New. * testsuite/30_threads/headers: New. * testsuite/30_threads/headers/mutex: New. * testsuite/30_threads/headers/mutex/types_std_c++0x.cc: New. * testsuite/30_threads/headers/mutex/std_c++0x_neg.cc: New. * testsuite/30_threads/headers/condition_variable: New. * testsuite/30_threads/headers/condition_variable/ types_std_c++0x.cc: New. * testsuite/30_threads/headers/condition_variable/std_c++0x_neg.cc: New. * testsuite/30_threads/once_flag: New. * testsuite/30_threads/unique_lock: New. * testsuite/30_threads/unique_lock/requirements: New. * testsuite/30_threads/unique_lock/requirements/typedefs.cc: New. * testsuite/30_threads/unique_lock/requirements/ explicit_instantiation.cc: New. * testsuite/17_intro/headers/c++200x/all.cc: Add new includes. From-SVN: r135007
2008-05-06 23:11:47 +02:00
template<int _Idx>
struct __unlock_impl
{
template<typename... _Lock>
condition_variable (condition_variable): Remove _M_internal_mutex. 2009-02-09 Benjamin Kosnik <bkoz@redhat.com> * include/std/condition_variable (condition_variable): Remove _M_internal_mutex. Add private __native_type typedef. * src/condition_variable.cc (condition_variable::notify_one): Remove _M_internal_mutex use. Use typedef. (condition_variable::notify_all): Same. * include/std/mutex (mutex): Add private __native_type typedef. Use it. (recursive_mutex): Same. (timed_mutex): Same. (recursive_timed_mutex): Same. (once_flag): Make __native_type typedef private. * include/std/thread (this_thread): Add minimal markup. * testsuite/30_threads/condition_variable_any/cons/assign_neg.cc: Adjust line numbers. * testsuite/30_threads/condition_variable_any/cons/copy_neg.cc: Same. * testsuite/30_threads/mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/mutex/cons/copy_neg.cc: Same. * testsuite/30_threads/timed_mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/timed_mutex/cons/copy_neg.cc: Same. * testsuite/30_threads/thread/cons/assign_neg.cc: Same. * testsuite/30_threads/thread/cons/copy_neg.cc: Same. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: Same. * testsuite/30_threads/condition_variable/cons/assign_neg.cc: Same. * testsuite/30_threads/condition_variable/cons/copy_neg.cc: Same. * testsuite/30_threads/recursive_timed_mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/recursive_timed_mutex/cons/copy_neg.cc: Same. * testsuite/util/thread/all.h: Testsuite utilities for testing thread. * testsuite/30_threads/condition_variable_any/native_handle/ typesizes.cc: New. * testsuite/30_threads/mutex/native_handle/typesizes.cc: Same. * testsuite/30_threads/timed_mutex/native_handle/typesizes.cc: Same. * testsuite/30_threads/thread/native_handle/typesizes.cc: Same. * testsuite/30_threads/recursive_mutex/native_handle/typesizes.cc: Same. * testsuite/30_threads/condition_variable/native_handle/ typesizes.cc: Same. * testsuite/30_threads/recursive_timed_mutex/native_handle/ typesizes.cc: Same. From-SVN: r144053
2009-02-10 09:29:57 +01:00
static void
__do_unlock(tuple<_Lock&...>& __locks)
{
std::get<_Idx>(__locks).unlock();
__unlock_impl<_Idx - 1>::__do_unlock(__locks);
}
};
condition_variable (condition_variable): Remove _M_internal_mutex. 2009-02-09 Benjamin Kosnik <bkoz@redhat.com> * include/std/condition_variable (condition_variable): Remove _M_internal_mutex. Add private __native_type typedef. * src/condition_variable.cc (condition_variable::notify_one): Remove _M_internal_mutex use. Use typedef. (condition_variable::notify_all): Same. * include/std/mutex (mutex): Add private __native_type typedef. Use it. (recursive_mutex): Same. (timed_mutex): Same. (recursive_timed_mutex): Same. (once_flag): Make __native_type typedef private. * include/std/thread (this_thread): Add minimal markup. * testsuite/30_threads/condition_variable_any/cons/assign_neg.cc: Adjust line numbers. * testsuite/30_threads/condition_variable_any/cons/copy_neg.cc: Same. * testsuite/30_threads/mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/mutex/cons/copy_neg.cc: Same. * testsuite/30_threads/timed_mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/timed_mutex/cons/copy_neg.cc: Same. * testsuite/30_threads/thread/cons/assign_neg.cc: Same. * testsuite/30_threads/thread/cons/copy_neg.cc: Same. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: Same. * testsuite/30_threads/condition_variable/cons/assign_neg.cc: Same. * testsuite/30_threads/condition_variable/cons/copy_neg.cc: Same. * testsuite/30_threads/recursive_timed_mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/recursive_timed_mutex/cons/copy_neg.cc: Same. * testsuite/util/thread/all.h: Testsuite utilities for testing thread. * testsuite/30_threads/condition_variable_any/native_handle/ typesizes.cc: New. * testsuite/30_threads/mutex/native_handle/typesizes.cc: Same. * testsuite/30_threads/timed_mutex/native_handle/typesizes.cc: Same. * testsuite/30_threads/thread/native_handle/typesizes.cc: Same. * testsuite/30_threads/recursive_mutex/native_handle/typesizes.cc: Same. * testsuite/30_threads/condition_variable/native_handle/ typesizes.cc: Same. * testsuite/30_threads/recursive_timed_mutex/native_handle/ typesizes.cc: Same. From-SVN: r144053
2009-02-10 09:29:57 +01:00
template<>
struct __unlock_impl<-1>
{
template<typename... _Lock>
condition_variable (condition_variable): Remove _M_internal_mutex. 2009-02-09 Benjamin Kosnik <bkoz@redhat.com> * include/std/condition_variable (condition_variable): Remove _M_internal_mutex. Add private __native_type typedef. * src/condition_variable.cc (condition_variable::notify_one): Remove _M_internal_mutex use. Use typedef. (condition_variable::notify_all): Same. * include/std/mutex (mutex): Add private __native_type typedef. Use it. (recursive_mutex): Same. (timed_mutex): Same. (recursive_timed_mutex): Same. (once_flag): Make __native_type typedef private. * include/std/thread (this_thread): Add minimal markup. * testsuite/30_threads/condition_variable_any/cons/assign_neg.cc: Adjust line numbers. * testsuite/30_threads/condition_variable_any/cons/copy_neg.cc: Same. * testsuite/30_threads/mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/mutex/cons/copy_neg.cc: Same. * testsuite/30_threads/timed_mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/timed_mutex/cons/copy_neg.cc: Same. * testsuite/30_threads/thread/cons/assign_neg.cc: Same. * testsuite/30_threads/thread/cons/copy_neg.cc: Same. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: Same. * testsuite/30_threads/condition_variable/cons/assign_neg.cc: Same. * testsuite/30_threads/condition_variable/cons/copy_neg.cc: Same. * testsuite/30_threads/recursive_timed_mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/recursive_timed_mutex/cons/copy_neg.cc: Same. * testsuite/util/thread/all.h: Testsuite utilities for testing thread. * testsuite/30_threads/condition_variable_any/native_handle/ typesizes.cc: New. * testsuite/30_threads/mutex/native_handle/typesizes.cc: Same. * testsuite/30_threads/timed_mutex/native_handle/typesizes.cc: Same. * testsuite/30_threads/thread/native_handle/typesizes.cc: Same. * testsuite/30_threads/recursive_mutex/native_handle/typesizes.cc: Same. * testsuite/30_threads/condition_variable/native_handle/ typesizes.cc: Same. * testsuite/30_threads/recursive_timed_mutex/native_handle/ typesizes.cc: Same. From-SVN: r144053
2009-02-10 09:29:57 +01:00
static void
__do_unlock(tuple<_Lock&...>&)
{ }
};
template<typename _Lock>
unique_lock<_Lock>
__try_to_lock(_Lock& __l)
{ return unique_lock<_Lock>(__l, try_to_lock); }
template<int _Idx, bool _Continue = true>
struct __try_lock_impl
{
template<typename... _Lock>
static void
__do_try_lock(tuple<_Lock&...>& __locks, int& __idx)
condition_variable (condition_variable): Remove _M_internal_mutex. 2009-02-09 Benjamin Kosnik <bkoz@redhat.com> * include/std/condition_variable (condition_variable): Remove _M_internal_mutex. Add private __native_type typedef. * src/condition_variable.cc (condition_variable::notify_one): Remove _M_internal_mutex use. Use typedef. (condition_variable::notify_all): Same. * include/std/mutex (mutex): Add private __native_type typedef. Use it. (recursive_mutex): Same. (timed_mutex): Same. (recursive_timed_mutex): Same. (once_flag): Make __native_type typedef private. * include/std/thread (this_thread): Add minimal markup. * testsuite/30_threads/condition_variable_any/cons/assign_neg.cc: Adjust line numbers. * testsuite/30_threads/condition_variable_any/cons/copy_neg.cc: Same. * testsuite/30_threads/mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/mutex/cons/copy_neg.cc: Same. * testsuite/30_threads/timed_mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/timed_mutex/cons/copy_neg.cc: Same. * testsuite/30_threads/thread/cons/assign_neg.cc: Same. * testsuite/30_threads/thread/cons/copy_neg.cc: Same. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: Same. * testsuite/30_threads/condition_variable/cons/assign_neg.cc: Same. * testsuite/30_threads/condition_variable/cons/copy_neg.cc: Same. * testsuite/30_threads/recursive_timed_mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/recursive_timed_mutex/cons/copy_neg.cc: Same. * testsuite/util/thread/all.h: Testsuite utilities for testing thread. * testsuite/30_threads/condition_variable_any/native_handle/ typesizes.cc: New. * testsuite/30_threads/mutex/native_handle/typesizes.cc: Same. * testsuite/30_threads/timed_mutex/native_handle/typesizes.cc: Same. * testsuite/30_threads/thread/native_handle/typesizes.cc: Same. * testsuite/30_threads/recursive_mutex/native_handle/typesizes.cc: Same. * testsuite/30_threads/condition_variable/native_handle/ typesizes.cc: Same. * testsuite/30_threads/recursive_timed_mutex/native_handle/ typesizes.cc: Same. From-SVN: r144053
2009-02-10 09:29:57 +01:00
{
__idx = _Idx;
auto __lock = __try_to_lock(std::get<_Idx>(__locks));
if (__lock.owns_lock())
{
__try_lock_impl<_Idx + 1, _Idx + 2 < sizeof...(_Lock)>::
__do_try_lock(__locks, __idx);
if (__idx == -1)
__lock.release();
}
}
};
condition_variable (condition_variable): Remove _M_internal_mutex. 2009-02-09 Benjamin Kosnik <bkoz@redhat.com> * include/std/condition_variable (condition_variable): Remove _M_internal_mutex. Add private __native_type typedef. * src/condition_variable.cc (condition_variable::notify_one): Remove _M_internal_mutex use. Use typedef. (condition_variable::notify_all): Same. * include/std/mutex (mutex): Add private __native_type typedef. Use it. (recursive_mutex): Same. (timed_mutex): Same. (recursive_timed_mutex): Same. (once_flag): Make __native_type typedef private. * include/std/thread (this_thread): Add minimal markup. * testsuite/30_threads/condition_variable_any/cons/assign_neg.cc: Adjust line numbers. * testsuite/30_threads/condition_variable_any/cons/copy_neg.cc: Same. * testsuite/30_threads/mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/mutex/cons/copy_neg.cc: Same. * testsuite/30_threads/timed_mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/timed_mutex/cons/copy_neg.cc: Same. * testsuite/30_threads/thread/cons/assign_neg.cc: Same. * testsuite/30_threads/thread/cons/copy_neg.cc: Same. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: Same. * testsuite/30_threads/condition_variable/cons/assign_neg.cc: Same. * testsuite/30_threads/condition_variable/cons/copy_neg.cc: Same. * testsuite/30_threads/recursive_timed_mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/recursive_timed_mutex/cons/copy_neg.cc: Same. * testsuite/util/thread/all.h: Testsuite utilities for testing thread. * testsuite/30_threads/condition_variable_any/native_handle/ typesizes.cc: New. * testsuite/30_threads/mutex/native_handle/typesizes.cc: Same. * testsuite/30_threads/timed_mutex/native_handle/typesizes.cc: Same. * testsuite/30_threads/thread/native_handle/typesizes.cc: Same. * testsuite/30_threads/recursive_mutex/native_handle/typesizes.cc: Same. * testsuite/30_threads/condition_variable/native_handle/ typesizes.cc: Same. * testsuite/30_threads/recursive_timed_mutex/native_handle/ typesizes.cc: Same. From-SVN: r144053
2009-02-10 09:29:57 +01:00
template<int _Idx>
struct __try_lock_impl<_Idx, false>
{
template<typename... _Lock>
static void
__do_try_lock(tuple<_Lock&...>& __locks, int& __idx)
condition_variable (condition_variable): Remove _M_internal_mutex. 2009-02-09 Benjamin Kosnik <bkoz@redhat.com> * include/std/condition_variable (condition_variable): Remove _M_internal_mutex. Add private __native_type typedef. * src/condition_variable.cc (condition_variable::notify_one): Remove _M_internal_mutex use. Use typedef. (condition_variable::notify_all): Same. * include/std/mutex (mutex): Add private __native_type typedef. Use it. (recursive_mutex): Same. (timed_mutex): Same. (recursive_timed_mutex): Same. (once_flag): Make __native_type typedef private. * include/std/thread (this_thread): Add minimal markup. * testsuite/30_threads/condition_variable_any/cons/assign_neg.cc: Adjust line numbers. * testsuite/30_threads/condition_variable_any/cons/copy_neg.cc: Same. * testsuite/30_threads/mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/mutex/cons/copy_neg.cc: Same. * testsuite/30_threads/timed_mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/timed_mutex/cons/copy_neg.cc: Same. * testsuite/30_threads/thread/cons/assign_neg.cc: Same. * testsuite/30_threads/thread/cons/copy_neg.cc: Same. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: Same. * testsuite/30_threads/condition_variable/cons/assign_neg.cc: Same. * testsuite/30_threads/condition_variable/cons/copy_neg.cc: Same. * testsuite/30_threads/recursive_timed_mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/recursive_timed_mutex/cons/copy_neg.cc: Same. * testsuite/util/thread/all.h: Testsuite utilities for testing thread. * testsuite/30_threads/condition_variable_any/native_handle/ typesizes.cc: New. * testsuite/30_threads/mutex/native_handle/typesizes.cc: Same. * testsuite/30_threads/timed_mutex/native_handle/typesizes.cc: Same. * testsuite/30_threads/thread/native_handle/typesizes.cc: Same. * testsuite/30_threads/recursive_mutex/native_handle/typesizes.cc: Same. * testsuite/30_threads/condition_variable/native_handle/ typesizes.cc: Same. * testsuite/30_threads/recursive_timed_mutex/native_handle/ typesizes.cc: Same. From-SVN: r144053
2009-02-10 09:29:57 +01:00
{
__idx = _Idx;
auto __lock = __try_to_lock(std::get<_Idx>(__locks));
if (__lock.owns_lock())
{
__idx = -1;
__lock.release();
}
}
};
condition_variable (condition_variable): Remove _M_internal_mutex. 2009-02-09 Benjamin Kosnik <bkoz@redhat.com> * include/std/condition_variable (condition_variable): Remove _M_internal_mutex. Add private __native_type typedef. * src/condition_variable.cc (condition_variable::notify_one): Remove _M_internal_mutex use. Use typedef. (condition_variable::notify_all): Same. * include/std/mutex (mutex): Add private __native_type typedef. Use it. (recursive_mutex): Same. (timed_mutex): Same. (recursive_timed_mutex): Same. (once_flag): Make __native_type typedef private. * include/std/thread (this_thread): Add minimal markup. * testsuite/30_threads/condition_variable_any/cons/assign_neg.cc: Adjust line numbers. * testsuite/30_threads/condition_variable_any/cons/copy_neg.cc: Same. * testsuite/30_threads/mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/mutex/cons/copy_neg.cc: Same. * testsuite/30_threads/timed_mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/timed_mutex/cons/copy_neg.cc: Same. * testsuite/30_threads/thread/cons/assign_neg.cc: Same. * testsuite/30_threads/thread/cons/copy_neg.cc: Same. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: Same. * testsuite/30_threads/condition_variable/cons/assign_neg.cc: Same. * testsuite/30_threads/condition_variable/cons/copy_neg.cc: Same. * testsuite/30_threads/recursive_timed_mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/recursive_timed_mutex/cons/copy_neg.cc: Same. * testsuite/util/thread/all.h: Testsuite utilities for testing thread. * testsuite/30_threads/condition_variable_any/native_handle/ typesizes.cc: New. * testsuite/30_threads/mutex/native_handle/typesizes.cc: Same. * testsuite/30_threads/timed_mutex/native_handle/typesizes.cc: Same. * testsuite/30_threads/thread/native_handle/typesizes.cc: Same. * testsuite/30_threads/recursive_mutex/native_handle/typesizes.cc: Same. * testsuite/30_threads/condition_variable/native_handle/ typesizes.cc: Same. * testsuite/30_threads/recursive_timed_mutex/native_handle/ typesizes.cc: Same. From-SVN: r144053
2009-02-10 09:29:57 +01:00
/** @brief Generic try_lock.
* @param __l1 Meets Mutex requirements (try_lock() may throw).
* @param __l2 Meets Mutex requirements (try_lock() may throw).
* @param __l3 Meets Mutex requirements (try_lock() may throw).
condition_variable (condition_variable): Remove _M_internal_mutex. 2009-02-09 Benjamin Kosnik <bkoz@redhat.com> * include/std/condition_variable (condition_variable): Remove _M_internal_mutex. Add private __native_type typedef. * src/condition_variable.cc (condition_variable::notify_one): Remove _M_internal_mutex use. Use typedef. (condition_variable::notify_all): Same. * include/std/mutex (mutex): Add private __native_type typedef. Use it. (recursive_mutex): Same. (timed_mutex): Same. (recursive_timed_mutex): Same. (once_flag): Make __native_type typedef private. * include/std/thread (this_thread): Add minimal markup. * testsuite/30_threads/condition_variable_any/cons/assign_neg.cc: Adjust line numbers. * testsuite/30_threads/condition_variable_any/cons/copy_neg.cc: Same. * testsuite/30_threads/mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/mutex/cons/copy_neg.cc: Same. * testsuite/30_threads/timed_mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/timed_mutex/cons/copy_neg.cc: Same. * testsuite/30_threads/thread/cons/assign_neg.cc: Same. * testsuite/30_threads/thread/cons/copy_neg.cc: Same. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: Same. * testsuite/30_threads/condition_variable/cons/assign_neg.cc: Same. * testsuite/30_threads/condition_variable/cons/copy_neg.cc: Same. * testsuite/30_threads/recursive_timed_mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/recursive_timed_mutex/cons/copy_neg.cc: Same. * testsuite/util/thread/all.h: Testsuite utilities for testing thread. * testsuite/30_threads/condition_variable_any/native_handle/ typesizes.cc: New. * testsuite/30_threads/mutex/native_handle/typesizes.cc: Same. * testsuite/30_threads/timed_mutex/native_handle/typesizes.cc: Same. * testsuite/30_threads/thread/native_handle/typesizes.cc: Same. * testsuite/30_threads/recursive_mutex/native_handle/typesizes.cc: Same. * testsuite/30_threads/condition_variable/native_handle/ typesizes.cc: Same. * testsuite/30_threads/recursive_timed_mutex/native_handle/ typesizes.cc: Same. From-SVN: r144053
2009-02-10 09:29:57 +01:00
* @return Returns -1 if all try_lock() calls return true. Otherwise returns
* a 0-based index corresponding to the argument that returned false.
* @post Either all arguments are locked, or none will be.
*
* Sequentially calls try_lock() on each argument.
*/
template<typename _Lock1, typename _Lock2, typename... _Lock3>
int
try_lock(_Lock1& __l1, _Lock2& __l2, _Lock3&... __l3)
{
int __idx;
auto __locks = std::tie(__l1, __l2, __l3...);
__try
{ __try_lock_impl<0>::__do_try_lock(__locks, __idx); }
__catch(...)
{ }
return __idx;
}
condition_variable: New. 2008-05-06 Benjamin Kosnik <bkoz@redhat.com> * include/std/condition_variable: New. * include/std/mutex: New. * src/condition_variable.cc: New. * src/mutex.cc: New. * include/bits/functexcept.h: Add __throw_system_error varients. * src/functexcept.cc: Same. * config/abi/pre/gnu.ver: Add exports. * doc/xml/manual/using.xml: Add new includes. * doc/doxygen/user.cfg.in: Doxygen support. * doc/doxygen/doxygroups.cc: Same. * include/Makefile.am: Add mutex, condition_variable. * include/Makefile.in: Regenerated. * src/Makefile.am: Add mutex.cc, condition_variable.cc. * src/Makefile.in: Regenerated. * testsuite/30_threads: New. * testsuite/30_threads/lock_error: New. * testsuite/30_threads/mutex: New. * testsuite/30_threads/mutex/dest: New. * testsuite/30_threads/mutex/dest/destructor_locked.cc: New. * testsuite/30_threads/mutex/native_handle: New. * testsuite/30_threads/mutex/native_handle/1.cc: New. * testsuite/30_threads/mutex/cons: New. * testsuite/30_threads/mutex/cons/assign_neg.cc: New. * testsuite/30_threads/mutex/cons/1.cc: New. * testsuite/30_threads/mutex/cons/copy_neg.cc: New. * testsuite/30_threads/mutex/requirements: New. * testsuite/30_threads/mutex/requirements/typedefs.cc: New. * testsuite/30_threads/mutex/try_lock: New. * testsuite/30_threads/mutex/try_lock/1.cc: New. * testsuite/30_threads/mutex/try_lock/2.cc: New. * testsuite/30_threads/mutex/lock: New. * testsuite/30_threads/mutex/lock/1.cc: New. * testsuite/30_threads/mutex/unlock: New. * testsuite/30_threads/mutex/unlock/1.cc: New. * testsuite/30_threads/recursive_mutex: New. * testsuite/30_threads/recursive_mutex/dest: New. * testsuite/30_threads/recursive_mutex/dest/destructor_locked.cc: New. * testsuite/30_threads/recursive_mutex/native_handle: New. * testsuite/30_threads/recursive_mutex/native_handle/1.cc: New. * testsuite/30_threads/recursive_mutex/cons: New. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: New. * testsuite/30_threads/recursive_mutex/cons/1.cc: New. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: New. * testsuite/30_threads/recursive_mutex/requirements: New. * testsuite/30_threads/recursive_mutex/requirements/typedefs.cc: New. * testsuite/30_threads/lock_guard: New. * testsuite/30_threads/lock_guard/requirements: New. * testsuite/30_threads/lock_guard/requirements/typedefs.cc: New. * testsuite/30_threads/lock_guard/requirements/ explicit_instantiation.cc: New. * testsuite/30_threads/headers: New. * testsuite/30_threads/headers/mutex: New. * testsuite/30_threads/headers/mutex/types_std_c++0x.cc: New. * testsuite/30_threads/headers/mutex/std_c++0x_neg.cc: New. * testsuite/30_threads/headers/condition_variable: New. * testsuite/30_threads/headers/condition_variable/ types_std_c++0x.cc: New. * testsuite/30_threads/headers/condition_variable/std_c++0x_neg.cc: New. * testsuite/30_threads/once_flag: New. * testsuite/30_threads/unique_lock: New. * testsuite/30_threads/unique_lock/requirements: New. * testsuite/30_threads/unique_lock/requirements/typedefs.cc: New. * testsuite/30_threads/unique_lock/requirements/ explicit_instantiation.cc: New. * testsuite/17_intro/headers/c++200x/all.cc: Add new includes. From-SVN: r135007
2008-05-06 23:11:47 +02:00
/** @brief Generic lock.
* @param __l1 Meets Mutex requirements (try_lock() may throw).
* @param __l2 Meets Mutex requirements (try_lock() may throw).
* @param __l3 Meets Mutex requirements (try_lock() may throw).
* @throw An exception thrown by an argument's lock() or try_lock() member.
* @post All arguments are locked.
*
* All arguments are locked via a sequence of calls to lock(), try_lock()
* and unlock(). If the call exits via an exception any locks that were
* obtained will be released.
*/
template<typename _L1, typename _L2, typename ..._L3>
void
lock(_L1& __l1, _L2& __l2, _L3&... __l3)
{
while (true)
{
unique_lock<_L1> __first(__l1);
int __idx;
auto __locks = std::tie(__l2, __l3...);
__try_lock_impl<0, sizeof...(_L3)>::__do_try_lock(__locks, __idx);
if (__idx == -1)
{
__first.release();
return;
}
}
}
condition_variable: New. 2008-05-06 Benjamin Kosnik <bkoz@redhat.com> * include/std/condition_variable: New. * include/std/mutex: New. * src/condition_variable.cc: New. * src/mutex.cc: New. * include/bits/functexcept.h: Add __throw_system_error varients. * src/functexcept.cc: Same. * config/abi/pre/gnu.ver: Add exports. * doc/xml/manual/using.xml: Add new includes. * doc/doxygen/user.cfg.in: Doxygen support. * doc/doxygen/doxygroups.cc: Same. * include/Makefile.am: Add mutex, condition_variable. * include/Makefile.in: Regenerated. * src/Makefile.am: Add mutex.cc, condition_variable.cc. * src/Makefile.in: Regenerated. * testsuite/30_threads: New. * testsuite/30_threads/lock_error: New. * testsuite/30_threads/mutex: New. * testsuite/30_threads/mutex/dest: New. * testsuite/30_threads/mutex/dest/destructor_locked.cc: New. * testsuite/30_threads/mutex/native_handle: New. * testsuite/30_threads/mutex/native_handle/1.cc: New. * testsuite/30_threads/mutex/cons: New. * testsuite/30_threads/mutex/cons/assign_neg.cc: New. * testsuite/30_threads/mutex/cons/1.cc: New. * testsuite/30_threads/mutex/cons/copy_neg.cc: New. * testsuite/30_threads/mutex/requirements: New. * testsuite/30_threads/mutex/requirements/typedefs.cc: New. * testsuite/30_threads/mutex/try_lock: New. * testsuite/30_threads/mutex/try_lock/1.cc: New. * testsuite/30_threads/mutex/try_lock/2.cc: New. * testsuite/30_threads/mutex/lock: New. * testsuite/30_threads/mutex/lock/1.cc: New. * testsuite/30_threads/mutex/unlock: New. * testsuite/30_threads/mutex/unlock/1.cc: New. * testsuite/30_threads/recursive_mutex: New. * testsuite/30_threads/recursive_mutex/dest: New. * testsuite/30_threads/recursive_mutex/dest/destructor_locked.cc: New. * testsuite/30_threads/recursive_mutex/native_handle: New. * testsuite/30_threads/recursive_mutex/native_handle/1.cc: New. * testsuite/30_threads/recursive_mutex/cons: New. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: New. * testsuite/30_threads/recursive_mutex/cons/1.cc: New. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: New. * testsuite/30_threads/recursive_mutex/requirements: New. * testsuite/30_threads/recursive_mutex/requirements/typedefs.cc: New. * testsuite/30_threads/lock_guard: New. * testsuite/30_threads/lock_guard/requirements: New. * testsuite/30_threads/lock_guard/requirements/typedefs.cc: New. * testsuite/30_threads/lock_guard/requirements/ explicit_instantiation.cc: New. * testsuite/30_threads/headers: New. * testsuite/30_threads/headers/mutex: New. * testsuite/30_threads/headers/mutex/types_std_c++0x.cc: New. * testsuite/30_threads/headers/mutex/std_c++0x_neg.cc: New. * testsuite/30_threads/headers/condition_variable: New. * testsuite/30_threads/headers/condition_variable/ types_std_c++0x.cc: New. * testsuite/30_threads/headers/condition_variable/std_c++0x_neg.cc: New. * testsuite/30_threads/once_flag: New. * testsuite/30_threads/unique_lock: New. * testsuite/30_threads/unique_lock/requirements: New. * testsuite/30_threads/unique_lock/requirements/typedefs.cc: New. * testsuite/30_threads/unique_lock/requirements/ explicit_instantiation.cc: New. * testsuite/17_intro/headers/c++200x/all.cc: Add new includes. From-SVN: r135007
2008-05-06 23:11:47 +02:00
/// once_flag
struct once_flag
condition_variable: New. 2008-05-06 Benjamin Kosnik <bkoz@redhat.com> * include/std/condition_variable: New. * include/std/mutex: New. * src/condition_variable.cc: New. * src/mutex.cc: New. * include/bits/functexcept.h: Add __throw_system_error varients. * src/functexcept.cc: Same. * config/abi/pre/gnu.ver: Add exports. * doc/xml/manual/using.xml: Add new includes. * doc/doxygen/user.cfg.in: Doxygen support. * doc/doxygen/doxygroups.cc: Same. * include/Makefile.am: Add mutex, condition_variable. * include/Makefile.in: Regenerated. * src/Makefile.am: Add mutex.cc, condition_variable.cc. * src/Makefile.in: Regenerated. * testsuite/30_threads: New. * testsuite/30_threads/lock_error: New. * testsuite/30_threads/mutex: New. * testsuite/30_threads/mutex/dest: New. * testsuite/30_threads/mutex/dest/destructor_locked.cc: New. * testsuite/30_threads/mutex/native_handle: New. * testsuite/30_threads/mutex/native_handle/1.cc: New. * testsuite/30_threads/mutex/cons: New. * testsuite/30_threads/mutex/cons/assign_neg.cc: New. * testsuite/30_threads/mutex/cons/1.cc: New. * testsuite/30_threads/mutex/cons/copy_neg.cc: New. * testsuite/30_threads/mutex/requirements: New. * testsuite/30_threads/mutex/requirements/typedefs.cc: New. * testsuite/30_threads/mutex/try_lock: New. * testsuite/30_threads/mutex/try_lock/1.cc: New. * testsuite/30_threads/mutex/try_lock/2.cc: New. * testsuite/30_threads/mutex/lock: New. * testsuite/30_threads/mutex/lock/1.cc: New. * testsuite/30_threads/mutex/unlock: New. * testsuite/30_threads/mutex/unlock/1.cc: New. * testsuite/30_threads/recursive_mutex: New. * testsuite/30_threads/recursive_mutex/dest: New. * testsuite/30_threads/recursive_mutex/dest/destructor_locked.cc: New. * testsuite/30_threads/recursive_mutex/native_handle: New. * testsuite/30_threads/recursive_mutex/native_handle/1.cc: New. * testsuite/30_threads/recursive_mutex/cons: New. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: New. * testsuite/30_threads/recursive_mutex/cons/1.cc: New. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: New. * testsuite/30_threads/recursive_mutex/requirements: New. * testsuite/30_threads/recursive_mutex/requirements/typedefs.cc: New. * testsuite/30_threads/lock_guard: New. * testsuite/30_threads/lock_guard/requirements: New. * testsuite/30_threads/lock_guard/requirements/typedefs.cc: New. * testsuite/30_threads/lock_guard/requirements/ explicit_instantiation.cc: New. * testsuite/30_threads/headers: New. * testsuite/30_threads/headers/mutex: New. * testsuite/30_threads/headers/mutex/types_std_c++0x.cc: New. * testsuite/30_threads/headers/mutex/std_c++0x_neg.cc: New. * testsuite/30_threads/headers/condition_variable: New. * testsuite/30_threads/headers/condition_variable/ types_std_c++0x.cc: New. * testsuite/30_threads/headers/condition_variable/std_c++0x_neg.cc: New. * testsuite/30_threads/once_flag: New. * testsuite/30_threads/unique_lock: New. * testsuite/30_threads/unique_lock/requirements: New. * testsuite/30_threads/unique_lock/requirements/typedefs.cc: New. * testsuite/30_threads/unique_lock/requirements/ explicit_instantiation.cc: New. * testsuite/17_intro/headers/c++200x/all.cc: Add new includes. From-SVN: r135007
2008-05-06 23:11:47 +02:00
{
condition_variable (condition_variable): Remove _M_internal_mutex. 2009-02-09 Benjamin Kosnik <bkoz@redhat.com> * include/std/condition_variable (condition_variable): Remove _M_internal_mutex. Add private __native_type typedef. * src/condition_variable.cc (condition_variable::notify_one): Remove _M_internal_mutex use. Use typedef. (condition_variable::notify_all): Same. * include/std/mutex (mutex): Add private __native_type typedef. Use it. (recursive_mutex): Same. (timed_mutex): Same. (recursive_timed_mutex): Same. (once_flag): Make __native_type typedef private. * include/std/thread (this_thread): Add minimal markup. * testsuite/30_threads/condition_variable_any/cons/assign_neg.cc: Adjust line numbers. * testsuite/30_threads/condition_variable_any/cons/copy_neg.cc: Same. * testsuite/30_threads/mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/mutex/cons/copy_neg.cc: Same. * testsuite/30_threads/timed_mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/timed_mutex/cons/copy_neg.cc: Same. * testsuite/30_threads/thread/cons/assign_neg.cc: Same. * testsuite/30_threads/thread/cons/copy_neg.cc: Same. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: Same. * testsuite/30_threads/condition_variable/cons/assign_neg.cc: Same. * testsuite/30_threads/condition_variable/cons/copy_neg.cc: Same. * testsuite/30_threads/recursive_timed_mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/recursive_timed_mutex/cons/copy_neg.cc: Same. * testsuite/util/thread/all.h: Testsuite utilities for testing thread. * testsuite/30_threads/condition_variable_any/native_handle/ typesizes.cc: New. * testsuite/30_threads/mutex/native_handle/typesizes.cc: Same. * testsuite/30_threads/timed_mutex/native_handle/typesizes.cc: Same. * testsuite/30_threads/thread/native_handle/typesizes.cc: Same. * testsuite/30_threads/recursive_mutex/native_handle/typesizes.cc: Same. * testsuite/30_threads/condition_variable/native_handle/ typesizes.cc: Same. * testsuite/30_threads/recursive_timed_mutex/native_handle/ typesizes.cc: Same. From-SVN: r144053
2009-02-10 09:29:57 +01:00
private:
condition_variable: New. 2008-05-06 Benjamin Kosnik <bkoz@redhat.com> * include/std/condition_variable: New. * include/std/mutex: New. * src/condition_variable.cc: New. * src/mutex.cc: New. * include/bits/functexcept.h: Add __throw_system_error varients. * src/functexcept.cc: Same. * config/abi/pre/gnu.ver: Add exports. * doc/xml/manual/using.xml: Add new includes. * doc/doxygen/user.cfg.in: Doxygen support. * doc/doxygen/doxygroups.cc: Same. * include/Makefile.am: Add mutex, condition_variable. * include/Makefile.in: Regenerated. * src/Makefile.am: Add mutex.cc, condition_variable.cc. * src/Makefile.in: Regenerated. * testsuite/30_threads: New. * testsuite/30_threads/lock_error: New. * testsuite/30_threads/mutex: New. * testsuite/30_threads/mutex/dest: New. * testsuite/30_threads/mutex/dest/destructor_locked.cc: New. * testsuite/30_threads/mutex/native_handle: New. * testsuite/30_threads/mutex/native_handle/1.cc: New. * testsuite/30_threads/mutex/cons: New. * testsuite/30_threads/mutex/cons/assign_neg.cc: New. * testsuite/30_threads/mutex/cons/1.cc: New. * testsuite/30_threads/mutex/cons/copy_neg.cc: New. * testsuite/30_threads/mutex/requirements: New. * testsuite/30_threads/mutex/requirements/typedefs.cc: New. * testsuite/30_threads/mutex/try_lock: New. * testsuite/30_threads/mutex/try_lock/1.cc: New. * testsuite/30_threads/mutex/try_lock/2.cc: New. * testsuite/30_threads/mutex/lock: New. * testsuite/30_threads/mutex/lock/1.cc: New. * testsuite/30_threads/mutex/unlock: New. * testsuite/30_threads/mutex/unlock/1.cc: New. * testsuite/30_threads/recursive_mutex: New. * testsuite/30_threads/recursive_mutex/dest: New. * testsuite/30_threads/recursive_mutex/dest/destructor_locked.cc: New. * testsuite/30_threads/recursive_mutex/native_handle: New. * testsuite/30_threads/recursive_mutex/native_handle/1.cc: New. * testsuite/30_threads/recursive_mutex/cons: New. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: New. * testsuite/30_threads/recursive_mutex/cons/1.cc: New. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: New. * testsuite/30_threads/recursive_mutex/requirements: New. * testsuite/30_threads/recursive_mutex/requirements/typedefs.cc: New. * testsuite/30_threads/lock_guard: New. * testsuite/30_threads/lock_guard/requirements: New. * testsuite/30_threads/lock_guard/requirements/typedefs.cc: New. * testsuite/30_threads/lock_guard/requirements/ explicit_instantiation.cc: New. * testsuite/30_threads/headers: New. * testsuite/30_threads/headers/mutex: New. * testsuite/30_threads/headers/mutex/types_std_c++0x.cc: New. * testsuite/30_threads/headers/mutex/std_c++0x_neg.cc: New. * testsuite/30_threads/headers/condition_variable: New. * testsuite/30_threads/headers/condition_variable/ types_std_c++0x.cc: New. * testsuite/30_threads/headers/condition_variable/std_c++0x_neg.cc: New. * testsuite/30_threads/once_flag: New. * testsuite/30_threads/unique_lock: New. * testsuite/30_threads/unique_lock/requirements: New. * testsuite/30_threads/unique_lock/requirements/typedefs.cc: New. * testsuite/30_threads/unique_lock/requirements/ explicit_instantiation.cc: New. * testsuite/17_intro/headers/c++200x/all.cc: Add new includes. From-SVN: r135007
2008-05-06 23:11:47 +02:00
typedef __gthread_once_t __native_type;
__native_type _M_once = __GTHREAD_ONCE_INIT;
condition_variable: New. 2008-05-06 Benjamin Kosnik <bkoz@redhat.com> * include/std/condition_variable: New. * include/std/mutex: New. * src/condition_variable.cc: New. * src/mutex.cc: New. * include/bits/functexcept.h: Add __throw_system_error varients. * src/functexcept.cc: Same. * config/abi/pre/gnu.ver: Add exports. * doc/xml/manual/using.xml: Add new includes. * doc/doxygen/user.cfg.in: Doxygen support. * doc/doxygen/doxygroups.cc: Same. * include/Makefile.am: Add mutex, condition_variable. * include/Makefile.in: Regenerated. * src/Makefile.am: Add mutex.cc, condition_variable.cc. * src/Makefile.in: Regenerated. * testsuite/30_threads: New. * testsuite/30_threads/lock_error: New. * testsuite/30_threads/mutex: New. * testsuite/30_threads/mutex/dest: New. * testsuite/30_threads/mutex/dest/destructor_locked.cc: New. * testsuite/30_threads/mutex/native_handle: New. * testsuite/30_threads/mutex/native_handle/1.cc: New. * testsuite/30_threads/mutex/cons: New. * testsuite/30_threads/mutex/cons/assign_neg.cc: New. * testsuite/30_threads/mutex/cons/1.cc: New. * testsuite/30_threads/mutex/cons/copy_neg.cc: New. * testsuite/30_threads/mutex/requirements: New. * testsuite/30_threads/mutex/requirements/typedefs.cc: New. * testsuite/30_threads/mutex/try_lock: New. * testsuite/30_threads/mutex/try_lock/1.cc: New. * testsuite/30_threads/mutex/try_lock/2.cc: New. * testsuite/30_threads/mutex/lock: New. * testsuite/30_threads/mutex/lock/1.cc: New. * testsuite/30_threads/mutex/unlock: New. * testsuite/30_threads/mutex/unlock/1.cc: New. * testsuite/30_threads/recursive_mutex: New. * testsuite/30_threads/recursive_mutex/dest: New. * testsuite/30_threads/recursive_mutex/dest/destructor_locked.cc: New. * testsuite/30_threads/recursive_mutex/native_handle: New. * testsuite/30_threads/recursive_mutex/native_handle/1.cc: New. * testsuite/30_threads/recursive_mutex/cons: New. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: New. * testsuite/30_threads/recursive_mutex/cons/1.cc: New. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: New. * testsuite/30_threads/recursive_mutex/requirements: New. * testsuite/30_threads/recursive_mutex/requirements/typedefs.cc: New. * testsuite/30_threads/lock_guard: New. * testsuite/30_threads/lock_guard/requirements: New. * testsuite/30_threads/lock_guard/requirements/typedefs.cc: New. * testsuite/30_threads/lock_guard/requirements/ explicit_instantiation.cc: New. * testsuite/30_threads/headers: New. * testsuite/30_threads/headers/mutex: New. * testsuite/30_threads/headers/mutex/types_std_c++0x.cc: New. * testsuite/30_threads/headers/mutex/std_c++0x_neg.cc: New. * testsuite/30_threads/headers/condition_variable: New. * testsuite/30_threads/headers/condition_variable/ types_std_c++0x.cc: New. * testsuite/30_threads/headers/condition_variable/std_c++0x_neg.cc: New. * testsuite/30_threads/once_flag: New. * testsuite/30_threads/unique_lock: New. * testsuite/30_threads/unique_lock/requirements: New. * testsuite/30_threads/unique_lock/requirements/typedefs.cc: New. * testsuite/30_threads/unique_lock/requirements/ explicit_instantiation.cc: New. * testsuite/17_intro/headers/c++200x/all.cc: Add new includes. From-SVN: r135007
2008-05-06 23:11:47 +02:00
condition_variable (condition_variable): Remove _M_internal_mutex. 2009-02-09 Benjamin Kosnik <bkoz@redhat.com> * include/std/condition_variable (condition_variable): Remove _M_internal_mutex. Add private __native_type typedef. * src/condition_variable.cc (condition_variable::notify_one): Remove _M_internal_mutex use. Use typedef. (condition_variable::notify_all): Same. * include/std/mutex (mutex): Add private __native_type typedef. Use it. (recursive_mutex): Same. (timed_mutex): Same. (recursive_timed_mutex): Same. (once_flag): Make __native_type typedef private. * include/std/thread (this_thread): Add minimal markup. * testsuite/30_threads/condition_variable_any/cons/assign_neg.cc: Adjust line numbers. * testsuite/30_threads/condition_variable_any/cons/copy_neg.cc: Same. * testsuite/30_threads/mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/mutex/cons/copy_neg.cc: Same. * testsuite/30_threads/timed_mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/timed_mutex/cons/copy_neg.cc: Same. * testsuite/30_threads/thread/cons/assign_neg.cc: Same. * testsuite/30_threads/thread/cons/copy_neg.cc: Same. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: Same. * testsuite/30_threads/condition_variable/cons/assign_neg.cc: Same. * testsuite/30_threads/condition_variable/cons/copy_neg.cc: Same. * testsuite/30_threads/recursive_timed_mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/recursive_timed_mutex/cons/copy_neg.cc: Same. * testsuite/util/thread/all.h: Testsuite utilities for testing thread. * testsuite/30_threads/condition_variable_any/native_handle/ typesizes.cc: New. * testsuite/30_threads/mutex/native_handle/typesizes.cc: Same. * testsuite/30_threads/timed_mutex/native_handle/typesizes.cc: Same. * testsuite/30_threads/thread/native_handle/typesizes.cc: Same. * testsuite/30_threads/recursive_mutex/native_handle/typesizes.cc: Same. * testsuite/30_threads/condition_variable/native_handle/ typesizes.cc: Same. * testsuite/30_threads/recursive_timed_mutex/native_handle/ typesizes.cc: Same. From-SVN: r144053
2009-02-10 09:29:57 +01:00
public:
/// Constructor
constexpr once_flag() noexcept = default;
condition_variable (condition_variable): Remove _M_internal_mutex. 2009-02-09 Benjamin Kosnik <bkoz@redhat.com> * include/std/condition_variable (condition_variable): Remove _M_internal_mutex. Add private __native_type typedef. * src/condition_variable.cc (condition_variable::notify_one): Remove _M_internal_mutex use. Use typedef. (condition_variable::notify_all): Same. * include/std/mutex (mutex): Add private __native_type typedef. Use it. (recursive_mutex): Same. (timed_mutex): Same. (recursive_timed_mutex): Same. (once_flag): Make __native_type typedef private. * include/std/thread (this_thread): Add minimal markup. * testsuite/30_threads/condition_variable_any/cons/assign_neg.cc: Adjust line numbers. * testsuite/30_threads/condition_variable_any/cons/copy_neg.cc: Same. * testsuite/30_threads/mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/mutex/cons/copy_neg.cc: Same. * testsuite/30_threads/timed_mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/timed_mutex/cons/copy_neg.cc: Same. * testsuite/30_threads/thread/cons/assign_neg.cc: Same. * testsuite/30_threads/thread/cons/copy_neg.cc: Same. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: Same. * testsuite/30_threads/condition_variable/cons/assign_neg.cc: Same. * testsuite/30_threads/condition_variable/cons/copy_neg.cc: Same. * testsuite/30_threads/recursive_timed_mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/recursive_timed_mutex/cons/copy_neg.cc: Same. * testsuite/util/thread/all.h: Testsuite utilities for testing thread. * testsuite/30_threads/condition_variable_any/native_handle/ typesizes.cc: New. * testsuite/30_threads/mutex/native_handle/typesizes.cc: Same. * testsuite/30_threads/timed_mutex/native_handle/typesizes.cc: Same. * testsuite/30_threads/thread/native_handle/typesizes.cc: Same. * testsuite/30_threads/recursive_mutex/native_handle/typesizes.cc: Same. * testsuite/30_threads/condition_variable/native_handle/ typesizes.cc: Same. * testsuite/30_threads/recursive_timed_mutex/native_handle/ typesizes.cc: Same. From-SVN: r144053
2009-02-10 09:29:57 +01:00
/// Deleted copy constructor
condition_variable: Use new deleted ctors. 2008-09-03 Chris Fairles <chris.fairles@gmail.com> * include/std/condition_variable: Use new deleted ctors. * include/std/mutex: Likewise plus implement timed_mutex, recursive_timed_mutex and call_once. * src/condition_variable.cc: Implement wait(). Use gthread types. Remove _GTHREADS_HAS_COND checks in favor of global _GLIBCXX_HAS_GTHREADS. * src/mutex.cc (call_once): Implementation using TLS with mutex fallback. * config/abi/pre/gnu.ver: Add exported symbols. * testsuite/lib/libstdc++.exp (check_v3_target_gthreads): New. * testsuite/lib/dg-options.exp (dg-require-gthreads): Likewise. * testsuite/30_threads/lock_guard/requirements/typedefs.cc: Use dg-require-gthreads and dg-require-cstdint. * testsuite/30_threads/lock_guard/requirements/ explicit_instantiation.cc: Likewise. * testsuite/30_threads/mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/mutex/cons/1.cc: Likewise. * testsuite/30_threads/mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/mutex/lock/1.cc: Likewise. * testsuite/30_threads/mutex/unlock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/recursive_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/recursive_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/recursive_mutex/lock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/unique_lock/requirements/ explicit_instantiation.cc: Likewise. * testsuite/30_threads/unique_lock/requirements/typedefs.cc: Likewise. * testsuite/30_threads/mutex/cons/assign_neg.cc: Also adjust dg-error lines for deleted members. * testsuite/30_threads/mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/call_once/once_flag.cc: New. * testsuite/30_threads/call_once/call_once1.cc: Likewise. * testsuite/30_threads/condition_variable/cons/1.cc: Likewise. * testsuite/30_threads/condition_variable/cons/copy_neg.cc: Likewise * testsuite/30_threads/condition_variable/cons/assign_neg.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/1.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/copy_neg.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/assign_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/timed_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_until/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_until/2.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/1.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/timed_mutex/lock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/2.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/3.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_until/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_until/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/lock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/lock/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/3.cc: Likewise. * testsuite/30_threads/unique_lock/modifiers/1.cc: Likewise. * testsuite/30_threads/unique_lock/modifiers/2.cc: Likewise. * testsuite/30_threads/unique_lock/cons/1.cc: Likewise. * testsuite/30_threads/unique_lock/cons/2.cc: Likewise. * testsuite/30_threads/unique_lock/cons/3.cc: Likewise. * testsuite/30_threads/unique_lock/cons/4.cc: Likewise. * testsuite/30_threads/unique_lock/cons/5.cc: Likewise. * testsuite/30_threads/unique_lock/cons/6.cc: Likewise. * testsuite/30_threads/unique_lock/locking/1.cc: Likewise. * testsuite/30_threads/unique_lock/locking/2.cc: Likewise. * testsuite/30_threads/unique_lock/locking/3.cc: Likewise. * testsuite/30_threads/unique_lock/locking/4.cc: Likewise. From-SVN: r139943
2008-09-03 19:46:09 +02:00
once_flag(const once_flag&) = delete;
/// Deleted assignment operator
condition_variable: Use new deleted ctors. 2008-09-03 Chris Fairles <chris.fairles@gmail.com> * include/std/condition_variable: Use new deleted ctors. * include/std/mutex: Likewise plus implement timed_mutex, recursive_timed_mutex and call_once. * src/condition_variable.cc: Implement wait(). Use gthread types. Remove _GTHREADS_HAS_COND checks in favor of global _GLIBCXX_HAS_GTHREADS. * src/mutex.cc (call_once): Implementation using TLS with mutex fallback. * config/abi/pre/gnu.ver: Add exported symbols. * testsuite/lib/libstdc++.exp (check_v3_target_gthreads): New. * testsuite/lib/dg-options.exp (dg-require-gthreads): Likewise. * testsuite/30_threads/lock_guard/requirements/typedefs.cc: Use dg-require-gthreads and dg-require-cstdint. * testsuite/30_threads/lock_guard/requirements/ explicit_instantiation.cc: Likewise. * testsuite/30_threads/mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/mutex/cons/1.cc: Likewise. * testsuite/30_threads/mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/mutex/lock/1.cc: Likewise. * testsuite/30_threads/mutex/unlock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/recursive_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/recursive_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/recursive_mutex/lock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/unique_lock/requirements/ explicit_instantiation.cc: Likewise. * testsuite/30_threads/unique_lock/requirements/typedefs.cc: Likewise. * testsuite/30_threads/mutex/cons/assign_neg.cc: Also adjust dg-error lines for deleted members. * testsuite/30_threads/mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/call_once/once_flag.cc: New. * testsuite/30_threads/call_once/call_once1.cc: Likewise. * testsuite/30_threads/condition_variable/cons/1.cc: Likewise. * testsuite/30_threads/condition_variable/cons/copy_neg.cc: Likewise * testsuite/30_threads/condition_variable/cons/assign_neg.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/1.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/copy_neg.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/assign_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/timed_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_until/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_until/2.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/1.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/timed_mutex/lock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/2.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/3.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_until/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_until/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/lock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/lock/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/3.cc: Likewise. * testsuite/30_threads/unique_lock/modifiers/1.cc: Likewise. * testsuite/30_threads/unique_lock/modifiers/2.cc: Likewise. * testsuite/30_threads/unique_lock/cons/1.cc: Likewise. * testsuite/30_threads/unique_lock/cons/2.cc: Likewise. * testsuite/30_threads/unique_lock/cons/3.cc: Likewise. * testsuite/30_threads/unique_lock/cons/4.cc: Likewise. * testsuite/30_threads/unique_lock/cons/5.cc: Likewise. * testsuite/30_threads/unique_lock/cons/6.cc: Likewise. * testsuite/30_threads/unique_lock/locking/1.cc: Likewise. * testsuite/30_threads/unique_lock/locking/2.cc: Likewise. * testsuite/30_threads/unique_lock/locking/3.cc: Likewise. * testsuite/30_threads/unique_lock/locking/4.cc: Likewise. From-SVN: r139943
2008-09-03 19:46:09 +02:00
once_flag& operator=(const once_flag&) = delete;
condition_variable: New. 2008-05-06 Benjamin Kosnik <bkoz@redhat.com> * include/std/condition_variable: New. * include/std/mutex: New. * src/condition_variable.cc: New. * src/mutex.cc: New. * include/bits/functexcept.h: Add __throw_system_error varients. * src/functexcept.cc: Same. * config/abi/pre/gnu.ver: Add exports. * doc/xml/manual/using.xml: Add new includes. * doc/doxygen/user.cfg.in: Doxygen support. * doc/doxygen/doxygroups.cc: Same. * include/Makefile.am: Add mutex, condition_variable. * include/Makefile.in: Regenerated. * src/Makefile.am: Add mutex.cc, condition_variable.cc. * src/Makefile.in: Regenerated. * testsuite/30_threads: New. * testsuite/30_threads/lock_error: New. * testsuite/30_threads/mutex: New. * testsuite/30_threads/mutex/dest: New. * testsuite/30_threads/mutex/dest/destructor_locked.cc: New. * testsuite/30_threads/mutex/native_handle: New. * testsuite/30_threads/mutex/native_handle/1.cc: New. * testsuite/30_threads/mutex/cons: New. * testsuite/30_threads/mutex/cons/assign_neg.cc: New. * testsuite/30_threads/mutex/cons/1.cc: New. * testsuite/30_threads/mutex/cons/copy_neg.cc: New. * testsuite/30_threads/mutex/requirements: New. * testsuite/30_threads/mutex/requirements/typedefs.cc: New. * testsuite/30_threads/mutex/try_lock: New. * testsuite/30_threads/mutex/try_lock/1.cc: New. * testsuite/30_threads/mutex/try_lock/2.cc: New. * testsuite/30_threads/mutex/lock: New. * testsuite/30_threads/mutex/lock/1.cc: New. * testsuite/30_threads/mutex/unlock: New. * testsuite/30_threads/mutex/unlock/1.cc: New. * testsuite/30_threads/recursive_mutex: New. * testsuite/30_threads/recursive_mutex/dest: New. * testsuite/30_threads/recursive_mutex/dest/destructor_locked.cc: New. * testsuite/30_threads/recursive_mutex/native_handle: New. * testsuite/30_threads/recursive_mutex/native_handle/1.cc: New. * testsuite/30_threads/recursive_mutex/cons: New. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: New. * testsuite/30_threads/recursive_mutex/cons/1.cc: New. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: New. * testsuite/30_threads/recursive_mutex/requirements: New. * testsuite/30_threads/recursive_mutex/requirements/typedefs.cc: New. * testsuite/30_threads/lock_guard: New. * testsuite/30_threads/lock_guard/requirements: New. * testsuite/30_threads/lock_guard/requirements/typedefs.cc: New. * testsuite/30_threads/lock_guard/requirements/ explicit_instantiation.cc: New. * testsuite/30_threads/headers: New. * testsuite/30_threads/headers/mutex: New. * testsuite/30_threads/headers/mutex/types_std_c++0x.cc: New. * testsuite/30_threads/headers/mutex/std_c++0x_neg.cc: New. * testsuite/30_threads/headers/condition_variable: New. * testsuite/30_threads/headers/condition_variable/ types_std_c++0x.cc: New. * testsuite/30_threads/headers/condition_variable/std_c++0x_neg.cc: New. * testsuite/30_threads/once_flag: New. * testsuite/30_threads/unique_lock: New. * testsuite/30_threads/unique_lock/requirements: New. * testsuite/30_threads/unique_lock/requirements/typedefs.cc: New. * testsuite/30_threads/unique_lock/requirements/ explicit_instantiation.cc: New. * testsuite/17_intro/headers/c++200x/all.cc: Add new includes. From-SVN: r135007
2008-05-06 23:11:47 +02:00
condition_variable: Use new deleted ctors. 2008-09-03 Chris Fairles <chris.fairles@gmail.com> * include/std/condition_variable: Use new deleted ctors. * include/std/mutex: Likewise plus implement timed_mutex, recursive_timed_mutex and call_once. * src/condition_variable.cc: Implement wait(). Use gthread types. Remove _GTHREADS_HAS_COND checks in favor of global _GLIBCXX_HAS_GTHREADS. * src/mutex.cc (call_once): Implementation using TLS with mutex fallback. * config/abi/pre/gnu.ver: Add exported symbols. * testsuite/lib/libstdc++.exp (check_v3_target_gthreads): New. * testsuite/lib/dg-options.exp (dg-require-gthreads): Likewise. * testsuite/30_threads/lock_guard/requirements/typedefs.cc: Use dg-require-gthreads and dg-require-cstdint. * testsuite/30_threads/lock_guard/requirements/ explicit_instantiation.cc: Likewise. * testsuite/30_threads/mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/mutex/cons/1.cc: Likewise. * testsuite/30_threads/mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/mutex/lock/1.cc: Likewise. * testsuite/30_threads/mutex/unlock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/recursive_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/recursive_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/recursive_mutex/lock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/unique_lock/requirements/ explicit_instantiation.cc: Likewise. * testsuite/30_threads/unique_lock/requirements/typedefs.cc: Likewise. * testsuite/30_threads/mutex/cons/assign_neg.cc: Also adjust dg-error lines for deleted members. * testsuite/30_threads/mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/call_once/once_flag.cc: New. * testsuite/30_threads/call_once/call_once1.cc: Likewise. * testsuite/30_threads/condition_variable/cons/1.cc: Likewise. * testsuite/30_threads/condition_variable/cons/copy_neg.cc: Likewise * testsuite/30_threads/condition_variable/cons/assign_neg.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/1.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/copy_neg.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/assign_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/timed_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_until/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_until/2.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/1.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/timed_mutex/lock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/2.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/3.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_until/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_until/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/lock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/lock/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/3.cc: Likewise. * testsuite/30_threads/unique_lock/modifiers/1.cc: Likewise. * testsuite/30_threads/unique_lock/modifiers/2.cc: Likewise. * testsuite/30_threads/unique_lock/cons/1.cc: Likewise. * testsuite/30_threads/unique_lock/cons/2.cc: Likewise. * testsuite/30_threads/unique_lock/cons/3.cc: Likewise. * testsuite/30_threads/unique_lock/cons/4.cc: Likewise. * testsuite/30_threads/unique_lock/cons/5.cc: Likewise. * testsuite/30_threads/unique_lock/cons/6.cc: Likewise. * testsuite/30_threads/unique_lock/locking/1.cc: Likewise. * testsuite/30_threads/unique_lock/locking/2.cc: Likewise. * testsuite/30_threads/unique_lock/locking/3.cc: Likewise. * testsuite/30_threads/unique_lock/locking/4.cc: Likewise. From-SVN: r139943
2008-09-03 19:46:09 +02:00
template<typename _Callable, typename... _Args>
friend void
call_once(once_flag& __once, _Callable&& __f, _Args&&... __args);
condition_variable: New. 2008-05-06 Benjamin Kosnik <bkoz@redhat.com> * include/std/condition_variable: New. * include/std/mutex: New. * src/condition_variable.cc: New. * src/mutex.cc: New. * include/bits/functexcept.h: Add __throw_system_error varients. * src/functexcept.cc: Same. * config/abi/pre/gnu.ver: Add exports. * doc/xml/manual/using.xml: Add new includes. * doc/doxygen/user.cfg.in: Doxygen support. * doc/doxygen/doxygroups.cc: Same. * include/Makefile.am: Add mutex, condition_variable. * include/Makefile.in: Regenerated. * src/Makefile.am: Add mutex.cc, condition_variable.cc. * src/Makefile.in: Regenerated. * testsuite/30_threads: New. * testsuite/30_threads/lock_error: New. * testsuite/30_threads/mutex: New. * testsuite/30_threads/mutex/dest: New. * testsuite/30_threads/mutex/dest/destructor_locked.cc: New. * testsuite/30_threads/mutex/native_handle: New. * testsuite/30_threads/mutex/native_handle/1.cc: New. * testsuite/30_threads/mutex/cons: New. * testsuite/30_threads/mutex/cons/assign_neg.cc: New. * testsuite/30_threads/mutex/cons/1.cc: New. * testsuite/30_threads/mutex/cons/copy_neg.cc: New. * testsuite/30_threads/mutex/requirements: New. * testsuite/30_threads/mutex/requirements/typedefs.cc: New. * testsuite/30_threads/mutex/try_lock: New. * testsuite/30_threads/mutex/try_lock/1.cc: New. * testsuite/30_threads/mutex/try_lock/2.cc: New. * testsuite/30_threads/mutex/lock: New. * testsuite/30_threads/mutex/lock/1.cc: New. * testsuite/30_threads/mutex/unlock: New. * testsuite/30_threads/mutex/unlock/1.cc: New. * testsuite/30_threads/recursive_mutex: New. * testsuite/30_threads/recursive_mutex/dest: New. * testsuite/30_threads/recursive_mutex/dest/destructor_locked.cc: New. * testsuite/30_threads/recursive_mutex/native_handle: New. * testsuite/30_threads/recursive_mutex/native_handle/1.cc: New. * testsuite/30_threads/recursive_mutex/cons: New. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: New. * testsuite/30_threads/recursive_mutex/cons/1.cc: New. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: New. * testsuite/30_threads/recursive_mutex/requirements: New. * testsuite/30_threads/recursive_mutex/requirements/typedefs.cc: New. * testsuite/30_threads/lock_guard: New. * testsuite/30_threads/lock_guard/requirements: New. * testsuite/30_threads/lock_guard/requirements/typedefs.cc: New. * testsuite/30_threads/lock_guard/requirements/ explicit_instantiation.cc: New. * testsuite/30_threads/headers: New. * testsuite/30_threads/headers/mutex: New. * testsuite/30_threads/headers/mutex/types_std_c++0x.cc: New. * testsuite/30_threads/headers/mutex/std_c++0x_neg.cc: New. * testsuite/30_threads/headers/condition_variable: New. * testsuite/30_threads/headers/condition_variable/ types_std_c++0x.cc: New. * testsuite/30_threads/headers/condition_variable/std_c++0x_neg.cc: New. * testsuite/30_threads/once_flag: New. * testsuite/30_threads/unique_lock: New. * testsuite/30_threads/unique_lock/requirements: New. * testsuite/30_threads/unique_lock/requirements/typedefs.cc: New. * testsuite/30_threads/unique_lock/requirements/ explicit_instantiation.cc: New. * testsuite/17_intro/headers/c++200x/all.cc: Add new includes. From-SVN: r135007
2008-05-06 23:11:47 +02:00
};
condition_variable: Use new deleted ctors. 2008-09-03 Chris Fairles <chris.fairles@gmail.com> * include/std/condition_variable: Use new deleted ctors. * include/std/mutex: Likewise plus implement timed_mutex, recursive_timed_mutex and call_once. * src/condition_variable.cc: Implement wait(). Use gthread types. Remove _GTHREADS_HAS_COND checks in favor of global _GLIBCXX_HAS_GTHREADS. * src/mutex.cc (call_once): Implementation using TLS with mutex fallback. * config/abi/pre/gnu.ver: Add exported symbols. * testsuite/lib/libstdc++.exp (check_v3_target_gthreads): New. * testsuite/lib/dg-options.exp (dg-require-gthreads): Likewise. * testsuite/30_threads/lock_guard/requirements/typedefs.cc: Use dg-require-gthreads and dg-require-cstdint. * testsuite/30_threads/lock_guard/requirements/ explicit_instantiation.cc: Likewise. * testsuite/30_threads/mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/mutex/cons/1.cc: Likewise. * testsuite/30_threads/mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/mutex/lock/1.cc: Likewise. * testsuite/30_threads/mutex/unlock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/recursive_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/recursive_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/recursive_mutex/lock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/unique_lock/requirements/ explicit_instantiation.cc: Likewise. * testsuite/30_threads/unique_lock/requirements/typedefs.cc: Likewise. * testsuite/30_threads/mutex/cons/assign_neg.cc: Also adjust dg-error lines for deleted members. * testsuite/30_threads/mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/call_once/once_flag.cc: New. * testsuite/30_threads/call_once/call_once1.cc: Likewise. * testsuite/30_threads/condition_variable/cons/1.cc: Likewise. * testsuite/30_threads/condition_variable/cons/copy_neg.cc: Likewise * testsuite/30_threads/condition_variable/cons/assign_neg.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/1.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/copy_neg.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/assign_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/timed_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_until/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_until/2.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/1.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/timed_mutex/lock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/2.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/3.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_until/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_until/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/lock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/lock/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/3.cc: Likewise. * testsuite/30_threads/unique_lock/modifiers/1.cc: Likewise. * testsuite/30_threads/unique_lock/modifiers/2.cc: Likewise. * testsuite/30_threads/unique_lock/cons/1.cc: Likewise. * testsuite/30_threads/unique_lock/cons/2.cc: Likewise. * testsuite/30_threads/unique_lock/cons/3.cc: Likewise. * testsuite/30_threads/unique_lock/cons/4.cc: Likewise. * testsuite/30_threads/unique_lock/cons/5.cc: Likewise. * testsuite/30_threads/unique_lock/cons/6.cc: Likewise. * testsuite/30_threads/unique_lock/locking/1.cc: Likewise. * testsuite/30_threads/unique_lock/locking/2.cc: Likewise. * testsuite/30_threads/unique_lock/locking/3.cc: Likewise. * testsuite/30_threads/unique_lock/locking/4.cc: Likewise. From-SVN: r139943
2008-09-03 19:46:09 +02:00
#ifdef _GLIBCXX_HAVE_TLS
extern __thread void* __once_callable;
extern __thread void (*__once_call)();
template<typename _Callable>
condition_variable (condition_variable): Remove _M_internal_mutex. 2009-02-09 Benjamin Kosnik <bkoz@redhat.com> * include/std/condition_variable (condition_variable): Remove _M_internal_mutex. Add private __native_type typedef. * src/condition_variable.cc (condition_variable::notify_one): Remove _M_internal_mutex use. Use typedef. (condition_variable::notify_all): Same. * include/std/mutex (mutex): Add private __native_type typedef. Use it. (recursive_mutex): Same. (timed_mutex): Same. (recursive_timed_mutex): Same. (once_flag): Make __native_type typedef private. * include/std/thread (this_thread): Add minimal markup. * testsuite/30_threads/condition_variable_any/cons/assign_neg.cc: Adjust line numbers. * testsuite/30_threads/condition_variable_any/cons/copy_neg.cc: Same. * testsuite/30_threads/mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/mutex/cons/copy_neg.cc: Same. * testsuite/30_threads/timed_mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/timed_mutex/cons/copy_neg.cc: Same. * testsuite/30_threads/thread/cons/assign_neg.cc: Same. * testsuite/30_threads/thread/cons/copy_neg.cc: Same. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: Same. * testsuite/30_threads/condition_variable/cons/assign_neg.cc: Same. * testsuite/30_threads/condition_variable/cons/copy_neg.cc: Same. * testsuite/30_threads/recursive_timed_mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/recursive_timed_mutex/cons/copy_neg.cc: Same. * testsuite/util/thread/all.h: Testsuite utilities for testing thread. * testsuite/30_threads/condition_variable_any/native_handle/ typesizes.cc: New. * testsuite/30_threads/mutex/native_handle/typesizes.cc: Same. * testsuite/30_threads/timed_mutex/native_handle/typesizes.cc: Same. * testsuite/30_threads/thread/native_handle/typesizes.cc: Same. * testsuite/30_threads/recursive_mutex/native_handle/typesizes.cc: Same. * testsuite/30_threads/condition_variable/native_handle/ typesizes.cc: Same. * testsuite/30_threads/recursive_timed_mutex/native_handle/ typesizes.cc: Same. From-SVN: r144053
2009-02-10 09:29:57 +01:00
inline void
__once_call_impl()
condition_variable: Use new deleted ctors. 2008-09-03 Chris Fairles <chris.fairles@gmail.com> * include/std/condition_variable: Use new deleted ctors. * include/std/mutex: Likewise plus implement timed_mutex, recursive_timed_mutex and call_once. * src/condition_variable.cc: Implement wait(). Use gthread types. Remove _GTHREADS_HAS_COND checks in favor of global _GLIBCXX_HAS_GTHREADS. * src/mutex.cc (call_once): Implementation using TLS with mutex fallback. * config/abi/pre/gnu.ver: Add exported symbols. * testsuite/lib/libstdc++.exp (check_v3_target_gthreads): New. * testsuite/lib/dg-options.exp (dg-require-gthreads): Likewise. * testsuite/30_threads/lock_guard/requirements/typedefs.cc: Use dg-require-gthreads and dg-require-cstdint. * testsuite/30_threads/lock_guard/requirements/ explicit_instantiation.cc: Likewise. * testsuite/30_threads/mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/mutex/cons/1.cc: Likewise. * testsuite/30_threads/mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/mutex/lock/1.cc: Likewise. * testsuite/30_threads/mutex/unlock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/recursive_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/recursive_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/recursive_mutex/lock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/unique_lock/requirements/ explicit_instantiation.cc: Likewise. * testsuite/30_threads/unique_lock/requirements/typedefs.cc: Likewise. * testsuite/30_threads/mutex/cons/assign_neg.cc: Also adjust dg-error lines for deleted members. * testsuite/30_threads/mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/call_once/once_flag.cc: New. * testsuite/30_threads/call_once/call_once1.cc: Likewise. * testsuite/30_threads/condition_variable/cons/1.cc: Likewise. * testsuite/30_threads/condition_variable/cons/copy_neg.cc: Likewise * testsuite/30_threads/condition_variable/cons/assign_neg.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/1.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/copy_neg.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/assign_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/timed_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_until/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_until/2.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/1.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/timed_mutex/lock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/2.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/3.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_until/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_until/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/lock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/lock/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/3.cc: Likewise. * testsuite/30_threads/unique_lock/modifiers/1.cc: Likewise. * testsuite/30_threads/unique_lock/modifiers/2.cc: Likewise. * testsuite/30_threads/unique_lock/cons/1.cc: Likewise. * testsuite/30_threads/unique_lock/cons/2.cc: Likewise. * testsuite/30_threads/unique_lock/cons/3.cc: Likewise. * testsuite/30_threads/unique_lock/cons/4.cc: Likewise. * testsuite/30_threads/unique_lock/cons/5.cc: Likewise. * testsuite/30_threads/unique_lock/cons/6.cc: Likewise. * testsuite/30_threads/unique_lock/locking/1.cc: Likewise. * testsuite/30_threads/unique_lock/locking/2.cc: Likewise. * testsuite/30_threads/unique_lock/locking/3.cc: Likewise. * testsuite/30_threads/unique_lock/locking/4.cc: Likewise. From-SVN: r139943
2008-09-03 19:46:09 +02:00
{
(*(_Callable*)__once_callable)();
}
#else
extern function<void()> __once_functor;
extern void
__set_once_functor_lock_ptr(unique_lock<mutex>*);
extern mutex&
__get_once_mutex();
condition_variable: Use new deleted ctors. 2008-09-03 Chris Fairles <chris.fairles@gmail.com> * include/std/condition_variable: Use new deleted ctors. * include/std/mutex: Likewise plus implement timed_mutex, recursive_timed_mutex and call_once. * src/condition_variable.cc: Implement wait(). Use gthread types. Remove _GTHREADS_HAS_COND checks in favor of global _GLIBCXX_HAS_GTHREADS. * src/mutex.cc (call_once): Implementation using TLS with mutex fallback. * config/abi/pre/gnu.ver: Add exported symbols. * testsuite/lib/libstdc++.exp (check_v3_target_gthreads): New. * testsuite/lib/dg-options.exp (dg-require-gthreads): Likewise. * testsuite/30_threads/lock_guard/requirements/typedefs.cc: Use dg-require-gthreads and dg-require-cstdint. * testsuite/30_threads/lock_guard/requirements/ explicit_instantiation.cc: Likewise. * testsuite/30_threads/mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/mutex/cons/1.cc: Likewise. * testsuite/30_threads/mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/mutex/lock/1.cc: Likewise. * testsuite/30_threads/mutex/unlock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/recursive_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/recursive_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/recursive_mutex/lock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/unique_lock/requirements/ explicit_instantiation.cc: Likewise. * testsuite/30_threads/unique_lock/requirements/typedefs.cc: Likewise. * testsuite/30_threads/mutex/cons/assign_neg.cc: Also adjust dg-error lines for deleted members. * testsuite/30_threads/mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/call_once/once_flag.cc: New. * testsuite/30_threads/call_once/call_once1.cc: Likewise. * testsuite/30_threads/condition_variable/cons/1.cc: Likewise. * testsuite/30_threads/condition_variable/cons/copy_neg.cc: Likewise * testsuite/30_threads/condition_variable/cons/assign_neg.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/1.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/copy_neg.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/assign_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/timed_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_until/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_until/2.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/1.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/timed_mutex/lock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/2.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/3.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_until/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_until/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/lock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/lock/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/3.cc: Likewise. * testsuite/30_threads/unique_lock/modifiers/1.cc: Likewise. * testsuite/30_threads/unique_lock/modifiers/2.cc: Likewise. * testsuite/30_threads/unique_lock/cons/1.cc: Likewise. * testsuite/30_threads/unique_lock/cons/2.cc: Likewise. * testsuite/30_threads/unique_lock/cons/3.cc: Likewise. * testsuite/30_threads/unique_lock/cons/4.cc: Likewise. * testsuite/30_threads/unique_lock/cons/5.cc: Likewise. * testsuite/30_threads/unique_lock/cons/6.cc: Likewise. * testsuite/30_threads/unique_lock/locking/1.cc: Likewise. * testsuite/30_threads/unique_lock/locking/2.cc: Likewise. * testsuite/30_threads/unique_lock/locking/3.cc: Likewise. * testsuite/30_threads/unique_lock/locking/4.cc: Likewise. From-SVN: r139943
2008-09-03 19:46:09 +02:00
#endif
extern "C" void __once_proxy(void);
condition_variable: Use new deleted ctors. 2008-09-03 Chris Fairles <chris.fairles@gmail.com> * include/std/condition_variable: Use new deleted ctors. * include/std/mutex: Likewise plus implement timed_mutex, recursive_timed_mutex and call_once. * src/condition_variable.cc: Implement wait(). Use gthread types. Remove _GTHREADS_HAS_COND checks in favor of global _GLIBCXX_HAS_GTHREADS. * src/mutex.cc (call_once): Implementation using TLS with mutex fallback. * config/abi/pre/gnu.ver: Add exported symbols. * testsuite/lib/libstdc++.exp (check_v3_target_gthreads): New. * testsuite/lib/dg-options.exp (dg-require-gthreads): Likewise. * testsuite/30_threads/lock_guard/requirements/typedefs.cc: Use dg-require-gthreads and dg-require-cstdint. * testsuite/30_threads/lock_guard/requirements/ explicit_instantiation.cc: Likewise. * testsuite/30_threads/mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/mutex/cons/1.cc: Likewise. * testsuite/30_threads/mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/mutex/lock/1.cc: Likewise. * testsuite/30_threads/mutex/unlock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/recursive_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/recursive_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/recursive_mutex/lock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/unique_lock/requirements/ explicit_instantiation.cc: Likewise. * testsuite/30_threads/unique_lock/requirements/typedefs.cc: Likewise. * testsuite/30_threads/mutex/cons/assign_neg.cc: Also adjust dg-error lines for deleted members. * testsuite/30_threads/mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/call_once/once_flag.cc: New. * testsuite/30_threads/call_once/call_once1.cc: Likewise. * testsuite/30_threads/condition_variable/cons/1.cc: Likewise. * testsuite/30_threads/condition_variable/cons/copy_neg.cc: Likewise * testsuite/30_threads/condition_variable/cons/assign_neg.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/1.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/copy_neg.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/assign_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/timed_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_until/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_until/2.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/1.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/timed_mutex/lock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/2.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/3.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_until/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_until/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/lock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/lock/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/3.cc: Likewise. * testsuite/30_threads/unique_lock/modifiers/1.cc: Likewise. * testsuite/30_threads/unique_lock/modifiers/2.cc: Likewise. * testsuite/30_threads/unique_lock/cons/1.cc: Likewise. * testsuite/30_threads/unique_lock/cons/2.cc: Likewise. * testsuite/30_threads/unique_lock/cons/3.cc: Likewise. * testsuite/30_threads/unique_lock/cons/4.cc: Likewise. * testsuite/30_threads/unique_lock/cons/5.cc: Likewise. * testsuite/30_threads/unique_lock/cons/6.cc: Likewise. * testsuite/30_threads/unique_lock/locking/1.cc: Likewise. * testsuite/30_threads/unique_lock/locking/2.cc: Likewise. * testsuite/30_threads/unique_lock/locking/3.cc: Likewise. * testsuite/30_threads/unique_lock/locking/4.cc: Likewise. From-SVN: r139943
2008-09-03 19:46:09 +02:00
user.cfg.in: Tweaks. 2009-02-20 Benjamin Kosnik <bkoz@redhat.com> * doc/doxygen/user.cfg.in: Tweaks. * doc/doxygen/doxygroups.cc: Prefer markup that can be elsewhere, be elsewhere. * include/tr1_impl/unordered_map: Just use most specialized container module. * include/tr1_impl/unordered_set: Same. * include/tr1_impl/array: Same. * include/bits/stl_list.h: Same. * include/bits/stl_map.h: Same. * include/bits/stl_queue.h: Same. * include/bits/stl_set.h: Same. * include/bits/stl_stack.h: Same. * include/bits/forward_list.h: Same. * include/bits/basic_string.h: Same. * include/bits/stl_multimap.h: Same. * include/bits/stl_vector.h: Same. * include/bits/stl_deque.h: Same. * include/bits/stl_multiset.h: Same. * include/bits/stl_bvector.h: Same. * include/backward/binders.h: Change binder module to binders. * include/std/complex: Add complex_numers module. * include/tr1_impl/complex: Same. * include/std/valarray: Add numeric_arrays module. * include/bits/gslice_array.h: Same. * include/bits/gslice.h: Same. * include/bits/mask_array.h: Same. * include/bits/slice_array.h: Same. * include/bits/indirect_array.h: Same. * include/bits/allocator.h: Add allocators module. * include/ext/throw_allocator.h * include/ext/pool_allocator.h * include/ext/bitmap_allocator.h * include/ext/new_allocator.h * include/ext/malloc_allocator.h * include/ext/array_allocator.h * include/ext/mt_allocator.h * include/ext/debug_allocator.h * include/ext/extptr_allocator.h * include/tr1_impl/functional: Move namespace markup here. * include/tr1_impl/regex: Same. * include/tr1_impl/type_traits: Add metaprogramming module. * include/std/type_traits: Same. * include/std/memory: Add memory module. * include/std/ratio: Add ratio module. * include/std/chrono: Move namespace markup here, add time module. * include/std/thread: Move namespace markup here, add concurrency module. * include/std/mutex: Use concurrency module. * include/std/condition_variable: Same. * include/bits/ios_base.h: Refine io module. * include/bits/basic_ios.h: Same. * include/std/fstream: Same. * include/std/istream: Same. * include/std/ostream: Same. * include/std/sstream: Same. * include/ext/vstring.h: Correct parameter markup. * include/bits/shared_ptr.h: Add pointer_abstractions module. * include/bits/unique_ptr.h: Same. * include/bits/algorithmfwd.h: Add mutating_algorithms, non_mutating_algorithms, sorting_algorithms. Adjust nesting. * include/bits/stl_heap.h: Add markup for new groupings. * include/bits/stl_algobase.h: Same. * include/bits/stl_algo.h: Same. * include/c_compatibility/stdatomic.h: Add atomics module. * include/c_global/cstdatomic: Same. * libsupc++/exception: Add exceptions module. * libsupc++/typeinfo: Same. * libsupc++/new: Same. * libsupc++/exception_ptr.h: Same. * include/std/system_error: Same. * include/std/stdexcept: Same. * libsupc++/cxxabi.h: Move doxygroups.cc markup here. * libsupc++/cxxabi-forced.h: Same. * testsuite/27_io/ios_base/cons/assign_neg.cc: Fix up line numbers. * testsuite/27_io/ios_base/cons/copy_neg.cc: Same. * testsuite/30_threads/condition_variable_any/cons/assign_neg.cc: Same. * testsuite/30_threads/condition_variable_any/cons/copy_neg.cc: Same. * testsuite/30_threads/mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/mutex/cons/copy_neg.cc: Same. * testsuite/30_threads/timed_mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/timed_mutex/cons/copy_neg.cc: Same. * testsuite/30_threads/thread/cons/assign_neg.cc: Same. * testsuite/30_threads/thread/cons/copy_neg.cc: Same. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: Same. * testsuite/30_threads/condition_variable/cons/assign_neg.cc: Same. * testsuite/30_threads/condition_variable/cons/copy_neg.cc: Same. * testsuite/30_threads/recursive_timed_mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/recursive_timed_mutex/cons/copy_neg.cc: Same. * testsuite/29_atomics/atomic/cons/assign_neg.cc: Same. * testsuite/29_atomics/atomic/cons/copy_neg.cc: Same. * testsuite/23_containers/vector/requirements/dr438/assign_neg.cc: Same. * testsuite/23_containers/vector/requirements/dr438/insert_neg.cc: Same. * testsuite/23_containers/vector/requirements/dr438/ constructor_1_neg.cc: Same. * testsuite/23_containers/vector/requirements/dr438/ constructor_2_neg.cc: Same. * testsuite/23_containers/deque/requirements/dr438/assign_neg.cc: Same. * testsuite/23_containers/deque/requirements/dr438/insert_neg.cc: Same. * testsuite/23_containers/deque/requirements/dr438/ constructor_1_neg.cc: Same. * testsuite/23_containers/deque/requirements/dr438/ constructor_2_neg.cc: Same. * testsuite/23_containers/list/requirements/dr438/assign_neg.cc: Same. * testsuite/23_containers/list/requirements/dr438/insert_neg.cc: Same. * testsuite/23_containers/list/requirements/dr438/ constructor_1_neg.cc: Same. * testsuite/23_containers/list/requirements/dr438/ constructor_2_neg.cc: Same. * testsuite/20_util/duration/cons/1_neg.cc: Same. * testsuite/20_util/duration/requirements/typedefs_neg1.cc: Same. * testsuite/20_util/duration/requirements/typedefs_neg2.cc: Same. * testsuite/20_util/duration/requirements/typedefs_neg3.cc: Same. * testsuite/20_util/unique_ptr/modifiers/reset_neg.cc: Same. * testsuite/20_util/unique_ptr/assign/assign.cc: Same. * testsuite/20_util/make_signed/requirements/typedefs_neg.cc: Same. * testsuite/20_util/make_unsigned/requirements/typedefs_neg.cc: Same. * testsuite/20_util/ratio/cons/cons_overflow.cc: Same. * testsuite/20_util/ratio/operations/ops_overflow.cc: Same. From-SVN: r144343
2009-02-21 01:45:21 +01:00
/// call_once
condition_variable: New. 2008-05-06 Benjamin Kosnik <bkoz@redhat.com> * include/std/condition_variable: New. * include/std/mutex: New. * src/condition_variable.cc: New. * src/mutex.cc: New. * include/bits/functexcept.h: Add __throw_system_error varients. * src/functexcept.cc: Same. * config/abi/pre/gnu.ver: Add exports. * doc/xml/manual/using.xml: Add new includes. * doc/doxygen/user.cfg.in: Doxygen support. * doc/doxygen/doxygroups.cc: Same. * include/Makefile.am: Add mutex, condition_variable. * include/Makefile.in: Regenerated. * src/Makefile.am: Add mutex.cc, condition_variable.cc. * src/Makefile.in: Regenerated. * testsuite/30_threads: New. * testsuite/30_threads/lock_error: New. * testsuite/30_threads/mutex: New. * testsuite/30_threads/mutex/dest: New. * testsuite/30_threads/mutex/dest/destructor_locked.cc: New. * testsuite/30_threads/mutex/native_handle: New. * testsuite/30_threads/mutex/native_handle/1.cc: New. * testsuite/30_threads/mutex/cons: New. * testsuite/30_threads/mutex/cons/assign_neg.cc: New. * testsuite/30_threads/mutex/cons/1.cc: New. * testsuite/30_threads/mutex/cons/copy_neg.cc: New. * testsuite/30_threads/mutex/requirements: New. * testsuite/30_threads/mutex/requirements/typedefs.cc: New. * testsuite/30_threads/mutex/try_lock: New. * testsuite/30_threads/mutex/try_lock/1.cc: New. * testsuite/30_threads/mutex/try_lock/2.cc: New. * testsuite/30_threads/mutex/lock: New. * testsuite/30_threads/mutex/lock/1.cc: New. * testsuite/30_threads/mutex/unlock: New. * testsuite/30_threads/mutex/unlock/1.cc: New. * testsuite/30_threads/recursive_mutex: New. * testsuite/30_threads/recursive_mutex/dest: New. * testsuite/30_threads/recursive_mutex/dest/destructor_locked.cc: New. * testsuite/30_threads/recursive_mutex/native_handle: New. * testsuite/30_threads/recursive_mutex/native_handle/1.cc: New. * testsuite/30_threads/recursive_mutex/cons: New. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: New. * testsuite/30_threads/recursive_mutex/cons/1.cc: New. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: New. * testsuite/30_threads/recursive_mutex/requirements: New. * testsuite/30_threads/recursive_mutex/requirements/typedefs.cc: New. * testsuite/30_threads/lock_guard: New. * testsuite/30_threads/lock_guard/requirements: New. * testsuite/30_threads/lock_guard/requirements/typedefs.cc: New. * testsuite/30_threads/lock_guard/requirements/ explicit_instantiation.cc: New. * testsuite/30_threads/headers: New. * testsuite/30_threads/headers/mutex: New. * testsuite/30_threads/headers/mutex/types_std_c++0x.cc: New. * testsuite/30_threads/headers/mutex/std_c++0x_neg.cc: New. * testsuite/30_threads/headers/condition_variable: New. * testsuite/30_threads/headers/condition_variable/ types_std_c++0x.cc: New. * testsuite/30_threads/headers/condition_variable/std_c++0x_neg.cc: New. * testsuite/30_threads/once_flag: New. * testsuite/30_threads/unique_lock: New. * testsuite/30_threads/unique_lock/requirements: New. * testsuite/30_threads/unique_lock/requirements/typedefs.cc: New. * testsuite/30_threads/unique_lock/requirements/ explicit_instantiation.cc: New. * testsuite/17_intro/headers/c++200x/all.cc: Add new includes. From-SVN: r135007
2008-05-06 23:11:47 +02:00
template<typename _Callable, typename... _Args>
void
call_once(once_flag& __once, _Callable&& __f, _Args&&... __args)
condition_variable: New. 2008-05-06 Benjamin Kosnik <bkoz@redhat.com> * include/std/condition_variable: New. * include/std/mutex: New. * src/condition_variable.cc: New. * src/mutex.cc: New. * include/bits/functexcept.h: Add __throw_system_error varients. * src/functexcept.cc: Same. * config/abi/pre/gnu.ver: Add exports. * doc/xml/manual/using.xml: Add new includes. * doc/doxygen/user.cfg.in: Doxygen support. * doc/doxygen/doxygroups.cc: Same. * include/Makefile.am: Add mutex, condition_variable. * include/Makefile.in: Regenerated. * src/Makefile.am: Add mutex.cc, condition_variable.cc. * src/Makefile.in: Regenerated. * testsuite/30_threads: New. * testsuite/30_threads/lock_error: New. * testsuite/30_threads/mutex: New. * testsuite/30_threads/mutex/dest: New. * testsuite/30_threads/mutex/dest/destructor_locked.cc: New. * testsuite/30_threads/mutex/native_handle: New. * testsuite/30_threads/mutex/native_handle/1.cc: New. * testsuite/30_threads/mutex/cons: New. * testsuite/30_threads/mutex/cons/assign_neg.cc: New. * testsuite/30_threads/mutex/cons/1.cc: New. * testsuite/30_threads/mutex/cons/copy_neg.cc: New. * testsuite/30_threads/mutex/requirements: New. * testsuite/30_threads/mutex/requirements/typedefs.cc: New. * testsuite/30_threads/mutex/try_lock: New. * testsuite/30_threads/mutex/try_lock/1.cc: New. * testsuite/30_threads/mutex/try_lock/2.cc: New. * testsuite/30_threads/mutex/lock: New. * testsuite/30_threads/mutex/lock/1.cc: New. * testsuite/30_threads/mutex/unlock: New. * testsuite/30_threads/mutex/unlock/1.cc: New. * testsuite/30_threads/recursive_mutex: New. * testsuite/30_threads/recursive_mutex/dest: New. * testsuite/30_threads/recursive_mutex/dest/destructor_locked.cc: New. * testsuite/30_threads/recursive_mutex/native_handle: New. * testsuite/30_threads/recursive_mutex/native_handle/1.cc: New. * testsuite/30_threads/recursive_mutex/cons: New. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: New. * testsuite/30_threads/recursive_mutex/cons/1.cc: New. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: New. * testsuite/30_threads/recursive_mutex/requirements: New. * testsuite/30_threads/recursive_mutex/requirements/typedefs.cc: New. * testsuite/30_threads/lock_guard: New. * testsuite/30_threads/lock_guard/requirements: New. * testsuite/30_threads/lock_guard/requirements/typedefs.cc: New. * testsuite/30_threads/lock_guard/requirements/ explicit_instantiation.cc: New. * testsuite/30_threads/headers: New. * testsuite/30_threads/headers/mutex: New. * testsuite/30_threads/headers/mutex/types_std_c++0x.cc: New. * testsuite/30_threads/headers/mutex/std_c++0x_neg.cc: New. * testsuite/30_threads/headers/condition_variable: New. * testsuite/30_threads/headers/condition_variable/ types_std_c++0x.cc: New. * testsuite/30_threads/headers/condition_variable/std_c++0x_neg.cc: New. * testsuite/30_threads/once_flag: New. * testsuite/30_threads/unique_lock: New. * testsuite/30_threads/unique_lock/requirements: New. * testsuite/30_threads/unique_lock/requirements/typedefs.cc: New. * testsuite/30_threads/unique_lock/requirements/ explicit_instantiation.cc: New. * testsuite/17_intro/headers/c++200x/all.cc: Add new includes. From-SVN: r135007
2008-05-06 23:11:47 +02:00
{
condition_variable: Use new deleted ctors. 2008-09-03 Chris Fairles <chris.fairles@gmail.com> * include/std/condition_variable: Use new deleted ctors. * include/std/mutex: Likewise plus implement timed_mutex, recursive_timed_mutex and call_once. * src/condition_variable.cc: Implement wait(). Use gthread types. Remove _GTHREADS_HAS_COND checks in favor of global _GLIBCXX_HAS_GTHREADS. * src/mutex.cc (call_once): Implementation using TLS with mutex fallback. * config/abi/pre/gnu.ver: Add exported symbols. * testsuite/lib/libstdc++.exp (check_v3_target_gthreads): New. * testsuite/lib/dg-options.exp (dg-require-gthreads): Likewise. * testsuite/30_threads/lock_guard/requirements/typedefs.cc: Use dg-require-gthreads and dg-require-cstdint. * testsuite/30_threads/lock_guard/requirements/ explicit_instantiation.cc: Likewise. * testsuite/30_threads/mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/mutex/cons/1.cc: Likewise. * testsuite/30_threads/mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/mutex/lock/1.cc: Likewise. * testsuite/30_threads/mutex/unlock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/recursive_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/recursive_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/recursive_mutex/lock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/unique_lock/requirements/ explicit_instantiation.cc: Likewise. * testsuite/30_threads/unique_lock/requirements/typedefs.cc: Likewise. * testsuite/30_threads/mutex/cons/assign_neg.cc: Also adjust dg-error lines for deleted members. * testsuite/30_threads/mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/call_once/once_flag.cc: New. * testsuite/30_threads/call_once/call_once1.cc: Likewise. * testsuite/30_threads/condition_variable/cons/1.cc: Likewise. * testsuite/30_threads/condition_variable/cons/copy_neg.cc: Likewise * testsuite/30_threads/condition_variable/cons/assign_neg.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/1.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/copy_neg.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/assign_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/timed_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_until/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_until/2.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/1.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/timed_mutex/lock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/2.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/3.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_until/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_until/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/lock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/lock/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/3.cc: Likewise. * testsuite/30_threads/unique_lock/modifiers/1.cc: Likewise. * testsuite/30_threads/unique_lock/modifiers/2.cc: Likewise. * testsuite/30_threads/unique_lock/cons/1.cc: Likewise. * testsuite/30_threads/unique_lock/cons/2.cc: Likewise. * testsuite/30_threads/unique_lock/cons/3.cc: Likewise. * testsuite/30_threads/unique_lock/cons/4.cc: Likewise. * testsuite/30_threads/unique_lock/cons/5.cc: Likewise. * testsuite/30_threads/unique_lock/cons/6.cc: Likewise. * testsuite/30_threads/unique_lock/locking/1.cc: Likewise. * testsuite/30_threads/unique_lock/locking/2.cc: Likewise. * testsuite/30_threads/unique_lock/locking/3.cc: Likewise. * testsuite/30_threads/unique_lock/locking/4.cc: Likewise. From-SVN: r139943
2008-09-03 19:46:09 +02:00
#ifdef _GLIBCXX_HAVE_TLS
auto __bound_functor = std::__bind_simple(std::forward<_Callable>(__f),
std::forward<_Args>(__args)...);
condition_variable: Use new deleted ctors. 2008-09-03 Chris Fairles <chris.fairles@gmail.com> * include/std/condition_variable: Use new deleted ctors. * include/std/mutex: Likewise plus implement timed_mutex, recursive_timed_mutex and call_once. * src/condition_variable.cc: Implement wait(). Use gthread types. Remove _GTHREADS_HAS_COND checks in favor of global _GLIBCXX_HAS_GTHREADS. * src/mutex.cc (call_once): Implementation using TLS with mutex fallback. * config/abi/pre/gnu.ver: Add exported symbols. * testsuite/lib/libstdc++.exp (check_v3_target_gthreads): New. * testsuite/lib/dg-options.exp (dg-require-gthreads): Likewise. * testsuite/30_threads/lock_guard/requirements/typedefs.cc: Use dg-require-gthreads and dg-require-cstdint. * testsuite/30_threads/lock_guard/requirements/ explicit_instantiation.cc: Likewise. * testsuite/30_threads/mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/mutex/cons/1.cc: Likewise. * testsuite/30_threads/mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/mutex/lock/1.cc: Likewise. * testsuite/30_threads/mutex/unlock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/recursive_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/recursive_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/recursive_mutex/lock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/unique_lock/requirements/ explicit_instantiation.cc: Likewise. * testsuite/30_threads/unique_lock/requirements/typedefs.cc: Likewise. * testsuite/30_threads/mutex/cons/assign_neg.cc: Also adjust dg-error lines for deleted members. * testsuite/30_threads/mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/call_once/once_flag.cc: New. * testsuite/30_threads/call_once/call_once1.cc: Likewise. * testsuite/30_threads/condition_variable/cons/1.cc: Likewise. * testsuite/30_threads/condition_variable/cons/copy_neg.cc: Likewise * testsuite/30_threads/condition_variable/cons/assign_neg.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/1.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/copy_neg.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/assign_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/timed_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_until/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_until/2.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/1.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/timed_mutex/lock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/2.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/3.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_until/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_until/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/lock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/lock/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/3.cc: Likewise. * testsuite/30_threads/unique_lock/modifiers/1.cc: Likewise. * testsuite/30_threads/unique_lock/modifiers/2.cc: Likewise. * testsuite/30_threads/unique_lock/cons/1.cc: Likewise. * testsuite/30_threads/unique_lock/cons/2.cc: Likewise. * testsuite/30_threads/unique_lock/cons/3.cc: Likewise. * testsuite/30_threads/unique_lock/cons/4.cc: Likewise. * testsuite/30_threads/unique_lock/cons/5.cc: Likewise. * testsuite/30_threads/unique_lock/cons/6.cc: Likewise. * testsuite/30_threads/unique_lock/locking/1.cc: Likewise. * testsuite/30_threads/unique_lock/locking/2.cc: Likewise. * testsuite/30_threads/unique_lock/locking/3.cc: Likewise. * testsuite/30_threads/unique_lock/locking/4.cc: Likewise. From-SVN: r139943
2008-09-03 19:46:09 +02:00
__once_callable = &__bound_functor;
__once_call = &__once_call_impl<decltype(__bound_functor)>;
#else
unique_lock<mutex> __functor_lock(__get_once_mutex());
auto __callable = std::__bind_simple(std::forward<_Callable>(__f),
std::forward<_Args>(__args)...);
__once_functor = [&]() { __callable(); };
__set_once_functor_lock_ptr(&__functor_lock);
condition_variable: Use new deleted ctors. 2008-09-03 Chris Fairles <chris.fairles@gmail.com> * include/std/condition_variable: Use new deleted ctors. * include/std/mutex: Likewise plus implement timed_mutex, recursive_timed_mutex and call_once. * src/condition_variable.cc: Implement wait(). Use gthread types. Remove _GTHREADS_HAS_COND checks in favor of global _GLIBCXX_HAS_GTHREADS. * src/mutex.cc (call_once): Implementation using TLS with mutex fallback. * config/abi/pre/gnu.ver: Add exported symbols. * testsuite/lib/libstdc++.exp (check_v3_target_gthreads): New. * testsuite/lib/dg-options.exp (dg-require-gthreads): Likewise. * testsuite/30_threads/lock_guard/requirements/typedefs.cc: Use dg-require-gthreads and dg-require-cstdint. * testsuite/30_threads/lock_guard/requirements/ explicit_instantiation.cc: Likewise. * testsuite/30_threads/mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/mutex/cons/1.cc: Likewise. * testsuite/30_threads/mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/mutex/lock/1.cc: Likewise. * testsuite/30_threads/mutex/unlock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/recursive_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/recursive_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/recursive_mutex/lock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/unique_lock/requirements/ explicit_instantiation.cc: Likewise. * testsuite/30_threads/unique_lock/requirements/typedefs.cc: Likewise. * testsuite/30_threads/mutex/cons/assign_neg.cc: Also adjust dg-error lines for deleted members. * testsuite/30_threads/mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/call_once/once_flag.cc: New. * testsuite/30_threads/call_once/call_once1.cc: Likewise. * testsuite/30_threads/condition_variable/cons/1.cc: Likewise. * testsuite/30_threads/condition_variable/cons/copy_neg.cc: Likewise * testsuite/30_threads/condition_variable/cons/assign_neg.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/1.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/copy_neg.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/assign_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/timed_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_until/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_until/2.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/1.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/timed_mutex/lock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/2.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/3.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_until/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_until/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/lock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/lock/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/3.cc: Likewise. * testsuite/30_threads/unique_lock/modifiers/1.cc: Likewise. * testsuite/30_threads/unique_lock/modifiers/2.cc: Likewise. * testsuite/30_threads/unique_lock/cons/1.cc: Likewise. * testsuite/30_threads/unique_lock/cons/2.cc: Likewise. * testsuite/30_threads/unique_lock/cons/3.cc: Likewise. * testsuite/30_threads/unique_lock/cons/4.cc: Likewise. * testsuite/30_threads/unique_lock/cons/5.cc: Likewise. * testsuite/30_threads/unique_lock/cons/6.cc: Likewise. * testsuite/30_threads/unique_lock/locking/1.cc: Likewise. * testsuite/30_threads/unique_lock/locking/2.cc: Likewise. * testsuite/30_threads/unique_lock/locking/3.cc: Likewise. * testsuite/30_threads/unique_lock/locking/4.cc: Likewise. From-SVN: r139943
2008-09-03 19:46:09 +02:00
#endif
condition_variable (condition_variable): Remove _M_internal_mutex. 2009-02-09 Benjamin Kosnik <bkoz@redhat.com> * include/std/condition_variable (condition_variable): Remove _M_internal_mutex. Add private __native_type typedef. * src/condition_variable.cc (condition_variable::notify_one): Remove _M_internal_mutex use. Use typedef. (condition_variable::notify_all): Same. * include/std/mutex (mutex): Add private __native_type typedef. Use it. (recursive_mutex): Same. (timed_mutex): Same. (recursive_timed_mutex): Same. (once_flag): Make __native_type typedef private. * include/std/thread (this_thread): Add minimal markup. * testsuite/30_threads/condition_variable_any/cons/assign_neg.cc: Adjust line numbers. * testsuite/30_threads/condition_variable_any/cons/copy_neg.cc: Same. * testsuite/30_threads/mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/mutex/cons/copy_neg.cc: Same. * testsuite/30_threads/timed_mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/timed_mutex/cons/copy_neg.cc: Same. * testsuite/30_threads/thread/cons/assign_neg.cc: Same. * testsuite/30_threads/thread/cons/copy_neg.cc: Same. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: Same. * testsuite/30_threads/condition_variable/cons/assign_neg.cc: Same. * testsuite/30_threads/condition_variable/cons/copy_neg.cc: Same. * testsuite/30_threads/recursive_timed_mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/recursive_timed_mutex/cons/copy_neg.cc: Same. * testsuite/util/thread/all.h: Testsuite utilities for testing thread. * testsuite/30_threads/condition_variable_any/native_handle/ typesizes.cc: New. * testsuite/30_threads/mutex/native_handle/typesizes.cc: Same. * testsuite/30_threads/timed_mutex/native_handle/typesizes.cc: Same. * testsuite/30_threads/thread/native_handle/typesizes.cc: Same. * testsuite/30_threads/recursive_mutex/native_handle/typesizes.cc: Same. * testsuite/30_threads/condition_variable/native_handle/ typesizes.cc: Same. * testsuite/30_threads/recursive_timed_mutex/native_handle/ typesizes.cc: Same. From-SVN: r144053
2009-02-10 09:29:57 +01:00
condition_variable: Use new deleted ctors. 2008-09-03 Chris Fairles <chris.fairles@gmail.com> * include/std/condition_variable: Use new deleted ctors. * include/std/mutex: Likewise plus implement timed_mutex, recursive_timed_mutex and call_once. * src/condition_variable.cc: Implement wait(). Use gthread types. Remove _GTHREADS_HAS_COND checks in favor of global _GLIBCXX_HAS_GTHREADS. * src/mutex.cc (call_once): Implementation using TLS with mutex fallback. * config/abi/pre/gnu.ver: Add exported symbols. * testsuite/lib/libstdc++.exp (check_v3_target_gthreads): New. * testsuite/lib/dg-options.exp (dg-require-gthreads): Likewise. * testsuite/30_threads/lock_guard/requirements/typedefs.cc: Use dg-require-gthreads and dg-require-cstdint. * testsuite/30_threads/lock_guard/requirements/ explicit_instantiation.cc: Likewise. * testsuite/30_threads/mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/mutex/cons/1.cc: Likewise. * testsuite/30_threads/mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/mutex/lock/1.cc: Likewise. * testsuite/30_threads/mutex/unlock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/recursive_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/recursive_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/recursive_mutex/lock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/unique_lock/requirements/ explicit_instantiation.cc: Likewise. * testsuite/30_threads/unique_lock/requirements/typedefs.cc: Likewise. * testsuite/30_threads/mutex/cons/assign_neg.cc: Also adjust dg-error lines for deleted members. * testsuite/30_threads/mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/call_once/once_flag.cc: New. * testsuite/30_threads/call_once/call_once1.cc: Likewise. * testsuite/30_threads/condition_variable/cons/1.cc: Likewise. * testsuite/30_threads/condition_variable/cons/copy_neg.cc: Likewise * testsuite/30_threads/condition_variable/cons/assign_neg.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/1.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/copy_neg.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/assign_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/timed_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_until/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_until/2.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/1.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/timed_mutex/lock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/2.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/3.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_until/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_until/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/lock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/lock/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/3.cc: Likewise. * testsuite/30_threads/unique_lock/modifiers/1.cc: Likewise. * testsuite/30_threads/unique_lock/modifiers/2.cc: Likewise. * testsuite/30_threads/unique_lock/cons/1.cc: Likewise. * testsuite/30_threads/unique_lock/cons/2.cc: Likewise. * testsuite/30_threads/unique_lock/cons/3.cc: Likewise. * testsuite/30_threads/unique_lock/cons/4.cc: Likewise. * testsuite/30_threads/unique_lock/cons/5.cc: Likewise. * testsuite/30_threads/unique_lock/cons/6.cc: Likewise. * testsuite/30_threads/unique_lock/locking/1.cc: Likewise. * testsuite/30_threads/unique_lock/locking/2.cc: Likewise. * testsuite/30_threads/unique_lock/locking/3.cc: Likewise. * testsuite/30_threads/unique_lock/locking/4.cc: Likewise. From-SVN: r139943
2008-09-03 19:46:09 +02:00
int __e = __gthread_once(&(__once._M_once), &__once_proxy);
#ifndef _GLIBCXX_HAVE_TLS
if (__functor_lock)
__set_once_functor_lock_ptr(0);
#endif
if (__e)
condition_variable: New. 2008-05-06 Benjamin Kosnik <bkoz@redhat.com> * include/std/condition_variable: New. * include/std/mutex: New. * src/condition_variable.cc: New. * src/mutex.cc: New. * include/bits/functexcept.h: Add __throw_system_error varients. * src/functexcept.cc: Same. * config/abi/pre/gnu.ver: Add exports. * doc/xml/manual/using.xml: Add new includes. * doc/doxygen/user.cfg.in: Doxygen support. * doc/doxygen/doxygroups.cc: Same. * include/Makefile.am: Add mutex, condition_variable. * include/Makefile.in: Regenerated. * src/Makefile.am: Add mutex.cc, condition_variable.cc. * src/Makefile.in: Regenerated. * testsuite/30_threads: New. * testsuite/30_threads/lock_error: New. * testsuite/30_threads/mutex: New. * testsuite/30_threads/mutex/dest: New. * testsuite/30_threads/mutex/dest/destructor_locked.cc: New. * testsuite/30_threads/mutex/native_handle: New. * testsuite/30_threads/mutex/native_handle/1.cc: New. * testsuite/30_threads/mutex/cons: New. * testsuite/30_threads/mutex/cons/assign_neg.cc: New. * testsuite/30_threads/mutex/cons/1.cc: New. * testsuite/30_threads/mutex/cons/copy_neg.cc: New. * testsuite/30_threads/mutex/requirements: New. * testsuite/30_threads/mutex/requirements/typedefs.cc: New. * testsuite/30_threads/mutex/try_lock: New. * testsuite/30_threads/mutex/try_lock/1.cc: New. * testsuite/30_threads/mutex/try_lock/2.cc: New. * testsuite/30_threads/mutex/lock: New. * testsuite/30_threads/mutex/lock/1.cc: New. * testsuite/30_threads/mutex/unlock: New. * testsuite/30_threads/mutex/unlock/1.cc: New. * testsuite/30_threads/recursive_mutex: New. * testsuite/30_threads/recursive_mutex/dest: New. * testsuite/30_threads/recursive_mutex/dest/destructor_locked.cc: New. * testsuite/30_threads/recursive_mutex/native_handle: New. * testsuite/30_threads/recursive_mutex/native_handle/1.cc: New. * testsuite/30_threads/recursive_mutex/cons: New. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: New. * testsuite/30_threads/recursive_mutex/cons/1.cc: New. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: New. * testsuite/30_threads/recursive_mutex/requirements: New. * testsuite/30_threads/recursive_mutex/requirements/typedefs.cc: New. * testsuite/30_threads/lock_guard: New. * testsuite/30_threads/lock_guard/requirements: New. * testsuite/30_threads/lock_guard/requirements/typedefs.cc: New. * testsuite/30_threads/lock_guard/requirements/ explicit_instantiation.cc: New. * testsuite/30_threads/headers: New. * testsuite/30_threads/headers/mutex: New. * testsuite/30_threads/headers/mutex/types_std_c++0x.cc: New. * testsuite/30_threads/headers/mutex/std_c++0x_neg.cc: New. * testsuite/30_threads/headers/condition_variable: New. * testsuite/30_threads/headers/condition_variable/ types_std_c++0x.cc: New. * testsuite/30_threads/headers/condition_variable/std_c++0x_neg.cc: New. * testsuite/30_threads/once_flag: New. * testsuite/30_threads/unique_lock: New. * testsuite/30_threads/unique_lock/requirements: New. * testsuite/30_threads/unique_lock/requirements/typedefs.cc: New. * testsuite/30_threads/unique_lock/requirements/ explicit_instantiation.cc: New. * testsuite/17_intro/headers/c++200x/all.cc: Add new includes. From-SVN: r135007
2008-05-06 23:11:47 +02:00
__throw_system_error(__e);
}
user.cfg.in: Tweaks. 2009-02-20 Benjamin Kosnik <bkoz@redhat.com> * doc/doxygen/user.cfg.in: Tweaks. * doc/doxygen/doxygroups.cc: Prefer markup that can be elsewhere, be elsewhere. * include/tr1_impl/unordered_map: Just use most specialized container module. * include/tr1_impl/unordered_set: Same. * include/tr1_impl/array: Same. * include/bits/stl_list.h: Same. * include/bits/stl_map.h: Same. * include/bits/stl_queue.h: Same. * include/bits/stl_set.h: Same. * include/bits/stl_stack.h: Same. * include/bits/forward_list.h: Same. * include/bits/basic_string.h: Same. * include/bits/stl_multimap.h: Same. * include/bits/stl_vector.h: Same. * include/bits/stl_deque.h: Same. * include/bits/stl_multiset.h: Same. * include/bits/stl_bvector.h: Same. * include/backward/binders.h: Change binder module to binders. * include/std/complex: Add complex_numers module. * include/tr1_impl/complex: Same. * include/std/valarray: Add numeric_arrays module. * include/bits/gslice_array.h: Same. * include/bits/gslice.h: Same. * include/bits/mask_array.h: Same. * include/bits/slice_array.h: Same. * include/bits/indirect_array.h: Same. * include/bits/allocator.h: Add allocators module. * include/ext/throw_allocator.h * include/ext/pool_allocator.h * include/ext/bitmap_allocator.h * include/ext/new_allocator.h * include/ext/malloc_allocator.h * include/ext/array_allocator.h * include/ext/mt_allocator.h * include/ext/debug_allocator.h * include/ext/extptr_allocator.h * include/tr1_impl/functional: Move namespace markup here. * include/tr1_impl/regex: Same. * include/tr1_impl/type_traits: Add metaprogramming module. * include/std/type_traits: Same. * include/std/memory: Add memory module. * include/std/ratio: Add ratio module. * include/std/chrono: Move namespace markup here, add time module. * include/std/thread: Move namespace markup here, add concurrency module. * include/std/mutex: Use concurrency module. * include/std/condition_variable: Same. * include/bits/ios_base.h: Refine io module. * include/bits/basic_ios.h: Same. * include/std/fstream: Same. * include/std/istream: Same. * include/std/ostream: Same. * include/std/sstream: Same. * include/ext/vstring.h: Correct parameter markup. * include/bits/shared_ptr.h: Add pointer_abstractions module. * include/bits/unique_ptr.h: Same. * include/bits/algorithmfwd.h: Add mutating_algorithms, non_mutating_algorithms, sorting_algorithms. Adjust nesting. * include/bits/stl_heap.h: Add markup for new groupings. * include/bits/stl_algobase.h: Same. * include/bits/stl_algo.h: Same. * include/c_compatibility/stdatomic.h: Add atomics module. * include/c_global/cstdatomic: Same. * libsupc++/exception: Add exceptions module. * libsupc++/typeinfo: Same. * libsupc++/new: Same. * libsupc++/exception_ptr.h: Same. * include/std/system_error: Same. * include/std/stdexcept: Same. * libsupc++/cxxabi.h: Move doxygroups.cc markup here. * libsupc++/cxxabi-forced.h: Same. * testsuite/27_io/ios_base/cons/assign_neg.cc: Fix up line numbers. * testsuite/27_io/ios_base/cons/copy_neg.cc: Same. * testsuite/30_threads/condition_variable_any/cons/assign_neg.cc: Same. * testsuite/30_threads/condition_variable_any/cons/copy_neg.cc: Same. * testsuite/30_threads/mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/mutex/cons/copy_neg.cc: Same. * testsuite/30_threads/timed_mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/timed_mutex/cons/copy_neg.cc: Same. * testsuite/30_threads/thread/cons/assign_neg.cc: Same. * testsuite/30_threads/thread/cons/copy_neg.cc: Same. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: Same. * testsuite/30_threads/condition_variable/cons/assign_neg.cc: Same. * testsuite/30_threads/condition_variable/cons/copy_neg.cc: Same. * testsuite/30_threads/recursive_timed_mutex/cons/assign_neg.cc: Same. * testsuite/30_threads/recursive_timed_mutex/cons/copy_neg.cc: Same. * testsuite/29_atomics/atomic/cons/assign_neg.cc: Same. * testsuite/29_atomics/atomic/cons/copy_neg.cc: Same. * testsuite/23_containers/vector/requirements/dr438/assign_neg.cc: Same. * testsuite/23_containers/vector/requirements/dr438/insert_neg.cc: Same. * testsuite/23_containers/vector/requirements/dr438/ constructor_1_neg.cc: Same. * testsuite/23_containers/vector/requirements/dr438/ constructor_2_neg.cc: Same. * testsuite/23_containers/deque/requirements/dr438/assign_neg.cc: Same. * testsuite/23_containers/deque/requirements/dr438/insert_neg.cc: Same. * testsuite/23_containers/deque/requirements/dr438/ constructor_1_neg.cc: Same. * testsuite/23_containers/deque/requirements/dr438/ constructor_2_neg.cc: Same. * testsuite/23_containers/list/requirements/dr438/assign_neg.cc: Same. * testsuite/23_containers/list/requirements/dr438/insert_neg.cc: Same. * testsuite/23_containers/list/requirements/dr438/ constructor_1_neg.cc: Same. * testsuite/23_containers/list/requirements/dr438/ constructor_2_neg.cc: Same. * testsuite/20_util/duration/cons/1_neg.cc: Same. * testsuite/20_util/duration/requirements/typedefs_neg1.cc: Same. * testsuite/20_util/duration/requirements/typedefs_neg2.cc: Same. * testsuite/20_util/duration/requirements/typedefs_neg3.cc: Same. * testsuite/20_util/unique_ptr/modifiers/reset_neg.cc: Same. * testsuite/20_util/unique_ptr/assign/assign.cc: Same. * testsuite/20_util/make_signed/requirements/typedefs_neg.cc: Same. * testsuite/20_util/make_unsigned/requirements/typedefs_neg.cc: Same. * testsuite/20_util/ratio/cons/cons_overflow.cc: Same. * testsuite/20_util/ratio/operations/ops_overflow.cc: Same. From-SVN: r144343
2009-02-21 01:45:21 +01:00
// @} group mutexes
PR libstdc++/36104 part four 2011-01-30 Benjamin Kosnik <bkoz@redhat.com> PR libstdc++/36104 part four * include/bits/c++config (_GLIBCXX_STD): Remove. (_GLIBCXX_STD_D, _GLIBCXX_PR): Now _GLIBCXX_STD_C. (_GLIBCXX_P): Now _GLIBCXX_STD_A. (_GLIBCXX_NAMESPACE_DEBUG, _GLIBCXX_NAMESPACE_PARALLEL, _GLIBCXX_NAMESPACE_PROFILE, _GLIBCXX_NAMESPACE_VERSION): Remove. (_GLIBCXX_INLINE_DEBUG, _GLIBCXX_INLINE_PARALLEL, _GLIBCXX_INLINE_PROFILE): Remove. (_GLIBCXX_BEGIN_NAMESPACE(X)): Remove. (_GLIBCXX_END_NAMESPACE): Remove. (_GLIBCXX_BEGIN_NESTED_NAMESPACE(X, Y)): Remove. (_GLIBCXX_END_NESTED_NAMESPACE): Remove. (_GLIBCXX_BEGIN_NAMESPACE_ALGO): Add. (_GLIBCXX_END_NAMESPACE_ALGO): Add. (_GLIBCXX_BEGIN_NAMESPACE_CONTAINER): Add. (_GLIBCXX_END_NAMESPACE_CONTAINER): Add. (_GLIBCXX_BEGIN_NAMESPACE_VERSION): Add. (_GLIBCXX_END_NAMESPACE_VERSION): Add. (_GLIBCXX_BEGIN_LDBL_NAMESPACE): To _GLIBCXX_BEGIN_NAMESPACE_LDBL. (_GLIBCXX_END_LDBL_NAMESPACE): To _GLIBCXX_END_NAMESPACE_LDBL. (_GLIBCXX_VISIBILITY_ATTR): Revert to _GLIBCXX_VISIBILITY. * include/*: Use new macros for namespace scope. * config/*: Same. * src/*: Same. * src/Makefile.am (sources): Remove debug_list.cc, add compatibility-debug_list-2.cc. (parallel_sources): Remove parallel_list.cc, add compatibility-parallel_list-2.cc. (compatibility-parallel_list-2.[o,lo]): New rule. * src/Makefile.in: Regenerate. * src/debug_list.cc: Remove. * src/parallel_list.cc: Remove. * src/compatibility-list-2.cc: New. * src/compatibility-debug_list-2.cc: New. * src/compatibility-parallel_list-2.cc: New. * doc/doxygen/user.cfg.in: Adjust macros. * testsuite/20_util/auto_ptr/assign_neg.cc: Adjust line numbers, macros. * testsuite/20_util/declval/requirements/1_neg.cc: Same. * testsuite/20_util/duration/requirements/typedefs_neg1.cc: Same. * testsuite/20_util/duration/requirements/typedefs_neg2.cc: Same. * testsuite/20_util/duration/requirements/typedefs_neg3.cc: Same. * testsuite/20_util/forward/c_neg.cc: Same. * testsuite/20_util/forward/f_neg.cc: Same. * testsuite/20_util/make_signed/requirements/typedefs_neg.cc: Same. * testsuite/20_util/make_unsigned/requirements/typedefs_neg.cc: Same. * testsuite/20_util/ratio/cons/cons_overflow_neg.cc: Same. * testsuite/20_util/ratio/operations/ops_overflow_neg.cc: Same. * testsuite/20_util/shared_ptr/cons/43820_neg.cc: Same. * testsuite/20_util/weak_ptr/comparison/cmp_neg.cc: Same. * testsuite/23_containers/deque/requirements/dr438/assign_neg.cc: Same. * testsuite/23_containers/deque/requirements/dr438/ constructor_1_neg.cc: Same. * testsuite/23_containers/deque/requirements/dr438/ constructor_2_neg.cc: Same. * testsuite/23_containers/deque/requirements/dr438/insert_neg.cc: Same. * testsuite/23_containers/forward_list/capacity/1.cc: Same. * testsuite/23_containers/forward_list/requirements/dr438/ assign_neg.cc: Same. * testsuite/23_containers/forward_list/requirements/dr438/ constructor_1_neg.cc: Same. * testsuite/23_containers/forward_list/requirements/dr438/ constructor_2_neg.cc: Same. * testsuite/23_containers/forward_list/requirements/dr438/ insert_neg.cc: Same. * testsuite/23_containers/list/capacity/29134.cc: Same. * testsuite/23_containers/list/requirements/dr438/assign_neg.cc: Same. * testsuite/23_containers/list/requirements/dr438/ constructor_1_neg.cc: Same. * testsuite/23_containers/list/requirements/dr438/ constructor_2_neg.cc: Same. * testsuite/23_containers/list/requirements/dr438/insert_neg.cc: Same. * testsuite/23_containers/vector/bool/capacity/29134.cc: Same. * testsuite/23_containers/vector/bool/modifiers/insert/31370.cc: Same. * testsuite/23_containers/vector/requirements/dr438/assign_neg.cc: Same. * testsuite/23_containers/vector/requirements/dr438/ constructor_1_neg.cc: Same. * testsuite/23_containers/vector/requirements/dr438/ constructor_2_neg.cc: Same. * testsuite/23_containers/vector/requirements/dr438/insert_neg.cc: Same. * testsuite/25_algorithms/sort/35588.cc: Same. * testsuite/27_io/ios_base/cons/assign_neg.cc: Same. * testsuite/27_io/ios_base/cons/copy_neg.cc: Same. * testsuite/ext/profile/mutex_extensions_neg.cc: Same. * testsuite/ext/profile/profiler_algos.cc: Same. * testsuite/ext/type_traits/add_unsigned_floating_neg.cc: Same. * testsuite/ext/type_traits/add_unsigned_integer_neg.cc: Same. * testsuite/ext/type_traits/remove_unsigned_floating_neg.cc: Same. * testsuite/ext/type_traits/remove_unsigned_integer_neg.cc: Same. * testsuite/tr1/2_general_utilities/shared_ptr/cons/43820_neg.cc: Same. From-SVN: r169421
2011-01-30 23:39:36 +01:00
_GLIBCXX_END_NAMESPACE_VERSION
} // namespace
condition_variable: New. 2008-05-06 Benjamin Kosnik <bkoz@redhat.com> * include/std/condition_variable: New. * include/std/mutex: New. * src/condition_variable.cc: New. * src/mutex.cc: New. * include/bits/functexcept.h: Add __throw_system_error varients. * src/functexcept.cc: Same. * config/abi/pre/gnu.ver: Add exports. * doc/xml/manual/using.xml: Add new includes. * doc/doxygen/user.cfg.in: Doxygen support. * doc/doxygen/doxygroups.cc: Same. * include/Makefile.am: Add mutex, condition_variable. * include/Makefile.in: Regenerated. * src/Makefile.am: Add mutex.cc, condition_variable.cc. * src/Makefile.in: Regenerated. * testsuite/30_threads: New. * testsuite/30_threads/lock_error: New. * testsuite/30_threads/mutex: New. * testsuite/30_threads/mutex/dest: New. * testsuite/30_threads/mutex/dest/destructor_locked.cc: New. * testsuite/30_threads/mutex/native_handle: New. * testsuite/30_threads/mutex/native_handle/1.cc: New. * testsuite/30_threads/mutex/cons: New. * testsuite/30_threads/mutex/cons/assign_neg.cc: New. * testsuite/30_threads/mutex/cons/1.cc: New. * testsuite/30_threads/mutex/cons/copy_neg.cc: New. * testsuite/30_threads/mutex/requirements: New. * testsuite/30_threads/mutex/requirements/typedefs.cc: New. * testsuite/30_threads/mutex/try_lock: New. * testsuite/30_threads/mutex/try_lock/1.cc: New. * testsuite/30_threads/mutex/try_lock/2.cc: New. * testsuite/30_threads/mutex/lock: New. * testsuite/30_threads/mutex/lock/1.cc: New. * testsuite/30_threads/mutex/unlock: New. * testsuite/30_threads/mutex/unlock/1.cc: New. * testsuite/30_threads/recursive_mutex: New. * testsuite/30_threads/recursive_mutex/dest: New. * testsuite/30_threads/recursive_mutex/dest/destructor_locked.cc: New. * testsuite/30_threads/recursive_mutex/native_handle: New. * testsuite/30_threads/recursive_mutex/native_handle/1.cc: New. * testsuite/30_threads/recursive_mutex/cons: New. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: New. * testsuite/30_threads/recursive_mutex/cons/1.cc: New. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: New. * testsuite/30_threads/recursive_mutex/requirements: New. * testsuite/30_threads/recursive_mutex/requirements/typedefs.cc: New. * testsuite/30_threads/lock_guard: New. * testsuite/30_threads/lock_guard/requirements: New. * testsuite/30_threads/lock_guard/requirements/typedefs.cc: New. * testsuite/30_threads/lock_guard/requirements/ explicit_instantiation.cc: New. * testsuite/30_threads/headers: New. * testsuite/30_threads/headers/mutex: New. * testsuite/30_threads/headers/mutex/types_std_c++0x.cc: New. * testsuite/30_threads/headers/mutex/std_c++0x_neg.cc: New. * testsuite/30_threads/headers/condition_variable: New. * testsuite/30_threads/headers/condition_variable/ types_std_c++0x.cc: New. * testsuite/30_threads/headers/condition_variable/std_c++0x_neg.cc: New. * testsuite/30_threads/once_flag: New. * testsuite/30_threads/unique_lock: New. * testsuite/30_threads/unique_lock/requirements: New. * testsuite/30_threads/unique_lock/requirements/typedefs.cc: New. * testsuite/30_threads/unique_lock/requirements/ explicit_instantiation.cc: New. * testsuite/17_intro/headers/c++200x/all.cc: Add new includes. From-SVN: r135007
2008-05-06 23:11:47 +02:00
condition_variable: Use new deleted ctors. 2008-09-03 Chris Fairles <chris.fairles@gmail.com> * include/std/condition_variable: Use new deleted ctors. * include/std/mutex: Likewise plus implement timed_mutex, recursive_timed_mutex and call_once. * src/condition_variable.cc: Implement wait(). Use gthread types. Remove _GTHREADS_HAS_COND checks in favor of global _GLIBCXX_HAS_GTHREADS. * src/mutex.cc (call_once): Implementation using TLS with mutex fallback. * config/abi/pre/gnu.ver: Add exported symbols. * testsuite/lib/libstdc++.exp (check_v3_target_gthreads): New. * testsuite/lib/dg-options.exp (dg-require-gthreads): Likewise. * testsuite/30_threads/lock_guard/requirements/typedefs.cc: Use dg-require-gthreads and dg-require-cstdint. * testsuite/30_threads/lock_guard/requirements/ explicit_instantiation.cc: Likewise. * testsuite/30_threads/mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/mutex/cons/1.cc: Likewise. * testsuite/30_threads/mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/mutex/lock/1.cc: Likewise. * testsuite/30_threads/mutex/unlock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/recursive_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/recursive_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/recursive_mutex/lock/1.cc: Likewise. * testsuite/30_threads/recursive_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/unique_lock/requirements/ explicit_instantiation.cc: Likewise. * testsuite/30_threads/unique_lock/requirements/typedefs.cc: Likewise. * testsuite/30_threads/mutex/cons/assign_neg.cc: Also adjust dg-error lines for deleted members. * testsuite/30_threads/mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/call_once/once_flag.cc: New. * testsuite/30_threads/call_once/call_once1.cc: Likewise. * testsuite/30_threads/condition_variable/cons/1.cc: Likewise. * testsuite/30_threads/condition_variable/cons/copy_neg.cc: Likewise * testsuite/30_threads/condition_variable/cons/assign_neg.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/1.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/copy_neg.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/assign_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/timed_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_until/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_until/2.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/1.cc: Likewise. * testsuite/30_threads/timed_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/timed_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/timed_mutex/lock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/1.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/2.cc: Likewise. * testsuite/30_threads/timed_mutex/try_lock_for/3.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/dest/destructor_locked.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_until/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_until/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/native_handle/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/assign_neg.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/cons/copy_neg.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/requirements/typedefs.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/lock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/lock/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/unlock/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/1.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/2.cc: Likewise. * testsuite/30_threads/recursive_timed_mutex/try_lock_for/3.cc: Likewise. * testsuite/30_threads/unique_lock/modifiers/1.cc: Likewise. * testsuite/30_threads/unique_lock/modifiers/2.cc: Likewise. * testsuite/30_threads/unique_lock/cons/1.cc: Likewise. * testsuite/30_threads/unique_lock/cons/2.cc: Likewise. * testsuite/30_threads/unique_lock/cons/3.cc: Likewise. * testsuite/30_threads/unique_lock/cons/4.cc: Likewise. * testsuite/30_threads/unique_lock/cons/5.cc: Likewise. * testsuite/30_threads/unique_lock/cons/6.cc: Likewise. * testsuite/30_threads/unique_lock/locking/1.cc: Likewise. * testsuite/30_threads/unique_lock/locking/2.cc: Likewise. * testsuite/30_threads/unique_lock/locking/3.cc: Likewise. * testsuite/30_threads/unique_lock/locking/4.cc: Likewise. From-SVN: r139943
2008-09-03 19:46:09 +02:00
#endif // _GLIBCXX_HAS_GTHREADS && _GLIBCXX_USE_C99_STDINT_TR1
#endif // __GXX_EXPERIMENTAL_CXX0X__
condition_variable: New. 2008-05-06 Benjamin Kosnik <bkoz@redhat.com> * include/std/condition_variable: New. * include/std/mutex: New. * src/condition_variable.cc: New. * src/mutex.cc: New. * include/bits/functexcept.h: Add __throw_system_error varients. * src/functexcept.cc: Same. * config/abi/pre/gnu.ver: Add exports. * doc/xml/manual/using.xml: Add new includes. * doc/doxygen/user.cfg.in: Doxygen support. * doc/doxygen/doxygroups.cc: Same. * include/Makefile.am: Add mutex, condition_variable. * include/Makefile.in: Regenerated. * src/Makefile.am: Add mutex.cc, condition_variable.cc. * src/Makefile.in: Regenerated. * testsuite/30_threads: New. * testsuite/30_threads/lock_error: New. * testsuite/30_threads/mutex: New. * testsuite/30_threads/mutex/dest: New. * testsuite/30_threads/mutex/dest/destructor_locked.cc: New. * testsuite/30_threads/mutex/native_handle: New. * testsuite/30_threads/mutex/native_handle/1.cc: New. * testsuite/30_threads/mutex/cons: New. * testsuite/30_threads/mutex/cons/assign_neg.cc: New. * testsuite/30_threads/mutex/cons/1.cc: New. * testsuite/30_threads/mutex/cons/copy_neg.cc: New. * testsuite/30_threads/mutex/requirements: New. * testsuite/30_threads/mutex/requirements/typedefs.cc: New. * testsuite/30_threads/mutex/try_lock: New. * testsuite/30_threads/mutex/try_lock/1.cc: New. * testsuite/30_threads/mutex/try_lock/2.cc: New. * testsuite/30_threads/mutex/lock: New. * testsuite/30_threads/mutex/lock/1.cc: New. * testsuite/30_threads/mutex/unlock: New. * testsuite/30_threads/mutex/unlock/1.cc: New. * testsuite/30_threads/recursive_mutex: New. * testsuite/30_threads/recursive_mutex/dest: New. * testsuite/30_threads/recursive_mutex/dest/destructor_locked.cc: New. * testsuite/30_threads/recursive_mutex/native_handle: New. * testsuite/30_threads/recursive_mutex/native_handle/1.cc: New. * testsuite/30_threads/recursive_mutex/cons: New. * testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: New. * testsuite/30_threads/recursive_mutex/cons/1.cc: New. * testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: New. * testsuite/30_threads/recursive_mutex/requirements: New. * testsuite/30_threads/recursive_mutex/requirements/typedefs.cc: New. * testsuite/30_threads/lock_guard: New. * testsuite/30_threads/lock_guard/requirements: New. * testsuite/30_threads/lock_guard/requirements/typedefs.cc: New. * testsuite/30_threads/lock_guard/requirements/ explicit_instantiation.cc: New. * testsuite/30_threads/headers: New. * testsuite/30_threads/headers/mutex: New. * testsuite/30_threads/headers/mutex/types_std_c++0x.cc: New. * testsuite/30_threads/headers/mutex/std_c++0x_neg.cc: New. * testsuite/30_threads/headers/condition_variable: New. * testsuite/30_threads/headers/condition_variable/ types_std_c++0x.cc: New. * testsuite/30_threads/headers/condition_variable/std_c++0x_neg.cc: New. * testsuite/30_threads/once_flag: New. * testsuite/30_threads/unique_lock: New. * testsuite/30_threads/unique_lock/requirements: New. * testsuite/30_threads/unique_lock/requirements/typedefs.cc: New. * testsuite/30_threads/unique_lock/requirements/ explicit_instantiation.cc: New. * testsuite/17_intro/headers/c++200x/all.cc: Add new includes. From-SVN: r135007
2008-05-06 23:11:47 +02:00
#endif // _GLIBCXX_MUTEX