libstdc++: Only include <condition_variable> in <shared_mutex> if needed
authorJonathan Wakely <jwakely@redhat.com>
Thu, 22 Oct 2020 17:42:03 +0000 (18:42 +0100)
committerJonathan Wakely <jwakely@redhat.com>
Thu, 22 Oct 2020 17:49:38 +0000 (18:49 +0100)
commitf5d9bc8ae81abe46640477bc9e655aa093947f5f
tree156bfe87b2dae29d10602b2b63928fc73552eef8
parentb1e7c6fce15b8ad222f265df2537701407fd289e
libstdc++: Only include <condition_variable> in <shared_mutex> if needed

The <condition_variable> header is not small, so <shared_mutex> should
not include it unless it actually needs std::condition_variable, which
is only the case when we don't have pthread_rwlock_t and the POSIX
Timers option.

The <shared_mutex> header would be even smaller if we had a header for
std::condition_variable (separate from std::condition_variable_any).
That's already planned for a future change.

And <memory_resource> would be even smaller if it was possible to get
std::shared_mutex without std::shared_timed_mutex (which depends on
<chrono>). For that to be effective, the synchronized_pool_resource
would have to create its own simpler version of std::shared_lock without
the timed waiting functions. I have no plans to do that.

libstdc++-v3/ChangeLog:

* include/std/shared_mutex: Only include <condition_variable>
when pthread_rwlock_t and POSIX timers are not available.
(__cpp_lib_shared_mutex, __cpp_lib_shared_timed_mutex): Change
value to be type 'long'.
* include/std/version (__cpp_lib_shared_mutex)
(__cpp_lib_shared_timed_mutex): Likewise.
libstdc++-v3/include/std/shared_mutex
libstdc++-v3/include/std/version