From adb3811847f33a57c2728305f16ea73dc8ffec42 Mon Sep 17 00:00:00 2001 From: Thomas Harte Date: Mon, 13 Nov 2017 22:51:42 -0500 Subject: [PATCH] Ensures deterministic initial state for the atomic flag. --- Concurrency/BestEffortUpdater.cpp | 5 +++++ Concurrency/BestEffortUpdater.hpp | 2 ++ 2 files changed, 7 insertions(+) diff --git a/Concurrency/BestEffortUpdater.cpp b/Concurrency/BestEffortUpdater.cpp index 551730f0b..a3ea15067 100644 --- a/Concurrency/BestEffortUpdater.cpp +++ b/Concurrency/BestEffortUpdater.cpp @@ -12,6 +12,11 @@ using namespace Concurrency; +BestEffortUpdater::BestEffortUpdater() { + // ATOMIC_FLAG_INIT isn't necessarily safe to use, so establish default state by other means. + update_is_ongoing_.clear(); +} + void BestEffortUpdater::update() { // Perform an update only if one is not currently ongoing. if(!update_is_ongoing_.test_and_set()) { diff --git a/Concurrency/BestEffortUpdater.hpp b/Concurrency/BestEffortUpdater.hpp index 9157723d6..6fb21edc3 100644 --- a/Concurrency/BestEffortUpdater.hpp +++ b/Concurrency/BestEffortUpdater.hpp @@ -25,6 +25,8 @@ namespace Concurrency { */ class BestEffortUpdater { public: + BestEffortUpdater(); + /// A delegate receives timing cues. struct Delegate { virtual void update(BestEffortUpdater *updater, int cycles, bool did_skip_previous_update) = 0;