Go to the documentation of this file.
10 #ifndef EIGEN_CXX11_THREADPOOL_EVENTCOUNT_H_
11 #define EIGEN_CXX11_THREADPOOL_EVENTCOUNT_H_
73 std::memory_order_seq_cst))
94 std::memory_order_relaxed);
98 std::memory_order_acq_rel)) {
123 std::memory_order_acq_rel))
131 std::atomic_thread_fence(std::memory_order_seq_cst);
144 }
else if (signals < waiters) {
150 uint64_t next =
w->next.load(std::memory_order_relaxed);
155 std::memory_order_acq_rel)) {
156 if (!notifyAll && (signals < waiters))
160 if (!notifyAll)
w->next.store(
kStackMask, std::memory_order_relaxed);
210 static_assert(
kEpochBits >= 20,
"not enough bits to prevent ABA problem");
221 std::unique_lock<std::mutex> lock(
w->mu);
234 std::unique_lock<std::mutex> lock(
w->mu);
249 #endif // EIGEN_CXX11_THREADPOOL_EVENTCOUNT_H_
static const uint64_t kWaiterBits
static void CheckState(uint64_t state, bool waiter=false)
Namespace containing all symbols from the Eigen library.
std::atomic< uint64_t > state_
static const uint64_t kEpochShift
static const uint64_t kWaiterShift
std::condition_variable cv
#define eigen_plain_assert(x)
static const uint64_t kWaiterMask
static const uint64_t kStackMask
static const uint64_t kSignalMask
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE size_t size() const
EIGEN_ALIGN_TO_BOUNDARY(128) std std::mutex mu
MaxSizeVector< Waiter > & waiters_
void operator=(const EventCount &)=delete
static const uint64_t kSignalShift
static const uint64_t kSignalInc
void Notify(bool notifyAll)
EventCount(MaxSizeVector< Waiter > &waiters)
void CommitWait(Waiter *w)
unsigned __int64 uint64_t
static const uint64_t kWaiterInc
static const uint64_t kEpochInc
static const uint64_t kEpochBits
static const uint64_t kEpochMask
gtsam
Author(s):
autogenerated on Sat Nov 16 2024 04:02:16