File tree Expand file tree Collapse file tree 1 file changed +11
-13
lines changed
include/behaviortree_cpp/utils Expand file tree Collapse file tree 1 file changed +11
-13
lines changed Original file line number Diff line number Diff line change 3
3
4
4
#include < chrono>
5
5
#include < mutex>
6
+ #include < atomic>
6
7
#include < condition_variable>
7
8
8
9
namespace BT
@@ -15,31 +16,28 @@ class WakeUpSignal
15
16
// / signal was received.
16
17
bool waitFor (std::chrono::microseconds usec)
17
18
{
18
- if (usec.count () > 0 ) {
19
- std::unique_lock<std::mutex> lk (mutex_);
20
- auto res = cv_.wait_for (lk, usec, [this ]{
21
- return ready_;
22
- });
23
- ready_ = false ;
24
- return res;
19
+ if (usec.count () <= 0 ) {
20
+ return ready_.load ();
25
21
}
26
- return ready_;
22
+ std::unique_lock<std::mutex> lk (mutex_);
23
+ auto res = cv_.wait_for (lk, usec, [this ]{
24
+ return ready_.load ();
25
+ });
26
+ ready_ = false ;
27
+ return res;
27
28
}
28
29
29
30
void emitSignal ()
30
31
{
31
- {
32
- std::lock_guard<std::mutex> lk (mutex_);
33
- ready_ = true ;
34
- }
32
+ ready_ = true ;
35
33
cv_.notify_all ();
36
34
}
37
35
38
36
private:
39
37
40
38
std::mutex mutex_;
41
39
std::condition_variable cv_;
42
- bool ready_ = false ;
40
+ std::atomic_bool ready_ = false ;
43
41
};
44
42
45
43
}
You can’t perform that action at this time.
0 commit comments