Lines Matching refs:node

203     void prepare_wait( wait_node<Context>& node) {  in prepare_wait()  argument
205 if (!node.my_initialized) { in prepare_wait()
206 node.init(); in prepare_wait()
209 else if (node.my_skipped_wakeup) { in prepare_wait()
210 node.reset(); in prepare_wait()
213 node.my_is_in_list.store(true, std::memory_order_relaxed); in prepare_wait()
217 node.my_epoch = my_epoch.load(std::memory_order_relaxed); in prepare_wait()
218 my_waitset.add(&node); in prepare_wait()
228 inline bool commit_wait( wait_node<Context>& node ) { in commit_wait() argument
229 const bool do_it = node.my_epoch == my_epoch.load(std::memory_order_relaxed); in commit_wait()
232 node.wait(); in commit_wait()
234 cancel_wait( node ); in commit_wait()
240 void cancel_wait( wait_node<Context>& node ) { in cancel_wait() argument
242 node.my_skipped_wakeup = true; in cancel_wait()
245 bool in_list = node.my_is_in_list.load(std::memory_order_acquire); in cancel_wait()
248 if (node.my_is_in_list.load(std::memory_order_relaxed)) { in cancel_wait()
249 my_waitset.remove(node); in cancel_wait()
251 node.my_is_in_list.store(false, std::memory_order_relaxed); in cancel_wait()
252 node.my_skipped_wakeup = false; in cancel_wait()
259 bool wait(Pred&& pred, NodeType&& node) { in wait() argument
260 prepare_wait(node); in wait()
261 while (!guarded_call(std::forward<Pred>(pred), node)) { in wait()
262 if (commit_wait(node)) { in wait()
266 prepare_wait(node); in wait()
269 cancel_wait(node); in wait()
370 auto* node = static_cast<wait_node<Context>*>(n); in notify_relaxed() local
371 if (predicate(node->my_context)) { in notify_relaxed()
373 node->my_is_in_list.store(false, std::memory_order_relaxed); in notify_relaxed()
405 auto* node = static_cast<wait_node<Context>*>(n); in notify_one_relaxed() local
406 if (predicate(node->my_context)) { in notify_one_relaxed()
408 node->my_is_in_list.store(false, std::memory_order_relaxed); in notify_one_relaxed()
463 bool guarded_call(Pred&& predicate, NodeType& node) { in guarded_call() argument
468 cancel_wait(node); in guarded_call()
478 …wait_node<Context>* to_wait_node( base_node* node ) { return static_cast<wait_node<Context>*>(node in to_wait_node() argument