1 #ifndef FWCore_Concurrency_ThreadSafeAddOnlyContainer_h
2 #define FWCore_Concurrency_ThreadSafeAddOnlyContainer_h
37 template <
typename... Args>
43 template <
typename... Args>
62 Node const* node = front_.load();
71 template <
typename... Args>
73 Node* expected = front_.load();
74 Node* newNode =
new Node(expected, std::forward<Args>(
args)...);
75 while (!front_.compare_exchange_strong(expected, newNode)) {
83 template <
typename... Args>
85 : next_(iNext), data_(std::forward<Args>(
args)...) {}
T * makeAndHold(Args &&...args)
ThreadSafeAddOnlyContainer()
Node const * next() const
std::atomic< Node * > front_
Node(Node *iNext, Args &&...args)
~ThreadSafeAddOnlyContainer()