aboutsummaryrefslogtreecommitdiff
path: root/libstdc++-v3/src
diff options
context:
space:
mode:
authorPaolo Carlini <paolo.carlini@oracle.com>2010-01-29 16:59:55 +0000
committerPaolo Carlini <paolo@gcc.gnu.org>2010-01-29 16:59:55 +0000
commitcdf5f5a34d171e91b73a1fa178464fbc9f9c82c3 (patch)
tree04295ecc625cf3eb700770cbad2552ec3a84a2e3 /libstdc++-v3/src
parentf9e06dbc6203596b2338c5a03e3d23e4da2e518c (diff)
downloadgcc-cdf5f5a34d171e91b73a1fa178464fbc9f9c82c3.tar.gz
gcc-cdf5f5a34d171e91b73a1fa178464fbc9f9c82c3.tar.bz2
gcc-cdf5f5a34d171e91b73a1fa178464fbc9f9c82c3.zip
condition_variable (enum class cv_status): Add and use it throughout, per N3000.
2010-01-29 Paolo Carlini <paolo.carlini@oracle.com> * include/std/condition_variable (enum class cv_status): Add and use it throughout, per N3000. (condition_variable_any::wait<>(_Lock&), wait<>(_Lock&, _Predicate), wait_until<>(_Lock&, const chrono::time_point<>&, _Predicate)): Provide definitions. * src/condition_variable.cc (condition_variable_any::notify_one, condition_variable_any::notify_all): Likewise. * config/abi/pre/gnu.ver: Export. * testsuite/30_threads/condition_variable_any/requirements/ typedefs.cc: New. * testsuite/30_threads/condition_variable_any/requirements/ standard_layout.cc: Likewise. * testsuite/30_threads/condition_variable/members/1.cc: Adjust. * testsuite/30_threads/condition_variable/members/2.cc: Likewise. * testsuite/30_threads/condition_variable/cons/assign_neg.cc: Adjust dg-error line numbers. * testsuite/30_threads/condition_variable/cons/copy_neg.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/assign_neg.cc: Likewise. * testsuite/30_threads/condition_variable_any/cons/copy_neg.cc: Likewise. From-SVN: r156358
Diffstat (limited to 'libstdc++-v3/src')
-rw-r--r--libstdc++-v3/src/condition_variable.cc22
1 files changed, 22 insertions, 0 deletions
diff --git a/libstdc++-v3/src/condition_variable.cc b/libstdc++-v3/src/condition_variable.cc
index 4fb2f179dfd..b4203799253 100644
--- a/libstdc++-v3/src/condition_variable.cc
+++ b/libstdc++-v3/src/condition_variable.cc
@@ -96,6 +96,28 @@ namespace std
{
__gthread_cond_destroy(&_M_cond);
}
+
+ void
+ condition_variable_any::notify_one()
+ {
+ int __e = __gthread_cond_signal(&_M_cond);
+
+ // XXX not in spec
+ // EINVAL
+ if (__e)
+ __throw_system_error(__e);
+ }
+
+ void
+ condition_variable_any::notify_all()
+ {
+ int __e = __gthread_cond_broadcast(&_M_cond);
+
+ // XXX not in spec
+ // EINVAL
+ if (__e)
+ __throw_system_error(__e);
+ }
}
#endif // _GLIBCXX_HAS_GTHREADS && _GLIBCXX_USE_C99_STDINT_TR1