[libcxx-commits] [libcxx] [libc++] fix `counting_semaphore` lost wakeups (PR #79265)
Louis Dionne via libcxx-commits
libcxx-commits at lists.llvm.org
Fri Jan 26 09:54:02 PST 2024
================
@@ -62,9 +62,17 @@ struct __libcpp_atomic_wait_backoff_impl {
}
};
+template <class _Atp, class _Fn, class _Fn2>
+_LIBCPP_AVAILABILITY_SYNC _LIBCPP_HIDE_FROM_ABI bool
+__cxx_atomic_wait(_Atp* __a, _Fn&& __test_fn, _Fn2&& __test_with_old) {
+ __libcpp_atomic_wait_backoff_impl<_Atp, __decay_t<_Fn2> > __backoff_fn = {__a, __test_with_old};
+ return std::__libcpp_thread_poll_with_backoff(__test_fn, __backoff_fn);
+}
+
template <class _Atp, class _Fn>
_LIBCPP_AVAILABILITY_SYNC _LIBCPP_HIDE_FROM_ABI bool __cxx_atomic_wait(_Atp* __a, _Fn&& __test_fn) {
- __libcpp_atomic_wait_backoff_impl<_Atp, __decay_t<_Fn> > __backoff_fn = {__a, __test_fn};
+ auto __test_with_old = [&](auto&) { return __test_fn(); };
----------------
ldionne wrote:
I think you need to use a struct here cause it seems this header needs to work in C++03 mode.
https://github.com/llvm/llvm-project/pull/79265
More information about the libcxx-commits
mailing list