This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[v3 patch] future_status::deferred for std::async futures


This implements a missing std::async feature and also implements LWG 2100.

The State_base and Async_state_common types are replaced (but still
exported from libstdc++.so for compatibility) with new versions with
an extra virtual function.

Tested x86_64-linux, committed to trunk.

2013-11-20  Jonathan Wakely  <jwakely.gcc@gmail.com>

        PR libstdc++/49204
        * include/std/future (__future_base::_State_base): Rename to
        __future_base::_State_baseV2.
        (__future_base::_State_baseV2::~_State_baseV2): Define as defaulted.
        (__future_base::_State_baseV2::_M_run_deferred): Rename to
        _M_complete_async.
        (__future_base::_State_baseV2::_M_has_deferred): Add new virtual.
        (__future_base::_State_baseV2::wait_for): Call _M_has_deferred() to
        test for a deferred function, or call _M_complete_async() to join an
        async thread that has made the shared state ready.
        (__future_base::_State_baseV2::wait_until): Likewise.
        (__future_base::_Async_state_common): Rename to _Async_state_commonV2.
        (__future_base::_Async_state_commonV2::_M_run_deferred): Rename to
        _M_complete_async.
        * src/c++11/compatibility-thread-c++0x.cc (__future_base::_State_base):
        Export old definition.
        (__future_base::_Async_state_common): Likewise.
        * src/c++11/future.cc (__future_base::_State_base::~_State_base):
        Remove.
        * doc/xml/manual/status_cxx2011.xml: Update status.
        * testsuite/30_threads/async/async.cc: Test future_status::timeout
        and future_status::ready.
        * testsuite/30_threads/async/sync.cc: Test future_status::deferred.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]