From a4015bde81371a8b998361ccfb56d5fd714e3ec6 Mon Sep 17 00:00:00 2001 From: Determinant Date: Tue, 26 Mar 2019 16:05:01 -0400 Subject: update atomic fences --- include/salticidae/event.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'include/salticidae/event.h') diff --git a/include/salticidae/event.h b/include/salticidae/event.h index fafa884..b97ab9a 100644 --- a/include/salticidae/event.h +++ b/include/salticidae/event.h @@ -481,6 +481,7 @@ class ThreadCall { } template void set_result(T &&data) { + std::atomic_thread_fence(std::memory_order_release); using _T = std::remove_reference_t; result = Result(new _T(std::forward(data)), [](void *ptr) {delete static_cast<_T *>(ptr);}); @@ -591,7 +592,7 @@ class MPSCQueueEventDriven: public MPSCQueue { template bool try_enqueue(U &&e) { static const uint64_t dummy = 1; - if (!MPMCQueue::try_enqueue(std::forward(e))) + if (!MPSCQueue::try_enqueue(std::forward(e))) return false; // memory barrier here, so any load/store in enqueue must be finialized if (wait_sig.exchange(false, std::memory_order_acq_rel)) -- cgit v1.2.3