diff options
author | Daniel Wilhelm <shieldwed@outlook.com> | 2018-05-09 00:11:35 +0200 |
---|---|---|
committer | Daniel Wilhelm <shieldwed@outlook.com> | 2018-05-09 00:11:35 +0200 |
commit | 015bb675d6eb177900c8ac94a6d35edc5ad90576 (patch) | |
tree | edde4153ce9b2ba6bdaf9d3c0af0966ed6dfd717 /zen/thread.h | |
parent | 9.8 (diff) | |
download | FreeFileSync-015bb675d6eb177900c8ac94a6d35edc5ad90576.tar.gz FreeFileSync-015bb675d6eb177900c8ac94a6d35edc5ad90576.tar.bz2 FreeFileSync-015bb675d6eb177900c8ac94a6d35edc5ad90576.zip |
9.9
Diffstat (limited to 'zen/thread.h')
-rwxr-xr-x | zen/thread.h | 13 |
1 files changed, 6 insertions, 7 deletions
diff --git a/zen/thread.h b/zen/thread.h index bfb66c31..3721b3c7 100755 --- a/zen/thread.h +++ b/zen/thread.h @@ -37,12 +37,11 @@ public: template <class Rep, class Period> bool tryJoinFor(const std::chrono::duration<Rep, Period>& relTime) { - if (threadCompleted_.wait_for(relTime) == std::future_status::ready) - { - stdThread_.join(); //runs thread-local destructors => this better be fast!!! - return true; - } - return false; + if (threadCompleted_.wait_for(relTime) != std::future_status::ready) + return false; + + stdThread_.join(); //runs thread-local destructors => this better be fast!!! + return true; } private: @@ -297,7 +296,7 @@ public: setConditionVar(&cv); ZEN_ON_SCOPE_EXIT(setConditionVar(nullptr)); - //"interrupted" is not protected by cv's mutex => signal may get lost!!! => add artifical time out to mitigate! CPU: 0.25% vs 0% for longer time out! + //"interrupted_" is not protected by cv's mutex => signal may get lost!!! => add artifical time out to mitigate! CPU: 0.25% vs 0% for longer time out! while (!cv.wait_for(lock, std::chrono::milliseconds(1), [&] { return this->interrupted_ || pred(); })) ; |