aboutsummaryrefslogtreecommitdiff
path: root/src/zencore/thread.cpp
diff options
context:
space:
mode:
authorStefan Boberg <[email protected]>2024-04-26 14:43:40 +0200
committerGitHub Enterprise <[email protected]>2024-04-26 14:43:40 +0200
commiteedb2cfbbe928b99a8283fea16f0d22b41cf80d0 (patch)
treeb0d50b7b7a07b347c246d6fee4a0ed311f13eb37 /src/zencore/thread.cpp
parentoplog iterate chunks content type (#65) (diff)
downloadzen-eedb2cfbbe928b99a8283fea16f0d22b41cf80d0.tar.xz
zen-eedb2cfbbe928b99a8283fea16f0d22b41cf80d0.zip
miscellaneous minor bugfixes (#66)v5.5.0
this change addresses some TSAN warnings for improved robustness and less TSAN noise - Added dedicated timer for EnqueueStateExitFlagTimer - Made log formatter `fullformatter` output consistent time stamps across threads - Made Linux/Mac event implementation TSAN clean
Diffstat (limited to 'src/zencore/thread.cpp')
-rw-r--r--src/zencore/thread.cpp7
1 files changed, 3 insertions, 4 deletions
diff --git a/src/zencore/thread.cpp b/src/zencore/thread.cpp
index 06093d6b0..329e17eea 100644
--- a/src/zencore/thread.cpp
+++ b/src/zencore/thread.cpp
@@ -153,10 +153,10 @@ Event::Event()
m_EventHandle = CreateEvent(nullptr, bManualReset, bInitialState, nullptr);
#else
ZEN_UNUSED(bManualReset);
- auto* Inner = new EventInner();
+ auto* Inner = new EventInner();
+ std::unique_lock Lock(Inner->Mutex);
Inner->bSet = bInitialState;
m_EventHandle = Inner;
- std::atomic_thread_fence(std::memory_order_release);
#endif
}
@@ -208,9 +208,8 @@ Event::Close()
{
std::unique_lock Lock(Inner->Mutex);
Inner->bSet.store(true);
+ m_EventHandle = nullptr;
}
- m_EventHandle = nullptr;
- std::atomic_thread_fence(std::memory_order_release);
delete Inner;
#endif
}