proxygen
folly::detail::ThreadCachedInts< Tag >::Integer Class Reference

Public Member Functions

constexpr Integer (ThreadCachedInts *ints) noexcept
 
 ~Integer () noexcept
 

Public Attributes

ThreadCachedIntsints_
 
std::atomic< int64_tinc_ [2]
 
std::atomic< int64_tdec_ [2]
 
Integer *& cache_
 

Detailed Description

template<typename Tag>
class folly::detail::ThreadCachedInts< Tag >::Integer

Definition at line 43 of file ThreadCachedInts.h.

Constructor & Destructor Documentation

template<typename Tag>
folly::detail::ThreadCachedInts< Tag >::Integer::~Integer ( )
inlinenoexcept

Definition at line 51 of file ThreadCachedInts.h.

References folly::asymmetricLightBarrier(), folly::detail::futexWake(), deadlock::load(), folly::detail::ThreadCachedInts< Tag >::orphan_dec_, folly::detail::ThreadCachedInts< Tag >::orphan_inc_, and folly::detail::ThreadCachedInts< Tag >::waiting_.

51  {
52  // Increment counts must be set before decrement counts
53  ints_->orphan_inc_[0].fetch_add(
54  inc_[0].load(std::memory_order_relaxed), std::memory_order_relaxed);
55  ints_->orphan_inc_[1].fetch_add(
56  inc_[1].load(std::memory_order_relaxed), std::memory_order_relaxed);
58  ints_->orphan_dec_[0].fetch_add(
59  dec_[0].load(std::memory_order_relaxed), std::memory_order_relaxed);
60  ints_->orphan_dec_[1].fetch_add(
61  dec_[1].load(std::memory_order_relaxed), std::memory_order_relaxed);
62  ints_->waiting_.store(0, std::memory_order_release);
64  // reset the cache_ on destructor so we can handle the delete/recreate
65  cache_ = nullptr;
66  }
def load()
Definition: deadlock.py:441
std::atomic< int64_t > orphan_dec_[2]
FOLLY_ALWAYS_INLINE void asymmetricLightBarrier()
std::atomic< int64_t > orphan_inc_[2]
int futexWake(const Futex *futex, int count, uint32_t wakeMask)
Definition: Futex-inl.h:107

Member Data Documentation

template<typename Tag>
Integer*& folly::detail::ThreadCachedInts< Tag >::Integer::cache_
template<typename Tag>
std::atomic<int64_t> folly::detail::ThreadCachedInts< Tag >::Integer::dec_[2]
template<typename Tag>
std::atomic<int64_t> folly::detail::ThreadCachedInts< Tag >::Integer::inc_[2]

Definition at line 48 of file ThreadCachedInts.h.

template<typename Tag>
ThreadCachedInts* folly::detail::ThreadCachedInts< Tag >::Integer::ints_

Definition at line 45 of file ThreadCachedInts.h.


The documentation for this class was generated from the following file: