blob: 071e24285ade01cc9923555bb1fba413352e1e6d (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
|
#ifndef TENSORFLOW_UTIL_NOTIFICATION_H_
#define TENSORFLOW_UTIL_NOTIFICATION_H_
#include <assert.h>
#include "tensorflow/core/platform/port.h"
namespace tensorflow {
class Notification {
public:
Notification() : notified_(false) {}
~Notification() {}
void Notify() {
mutex_lock l(mu_);
assert(!notified_);
notified_ = true;
cv_.notify_all();
}
bool HasBeenNotified() {
mutex_lock l(mu_);
return notified_;
}
void WaitForNotification() {
mutex_lock l(mu_);
while (!notified_) {
cv_.wait(l);
}
}
private:
mutex mu_;
condition_variable cv_;
bool notified_;
};
} // namespace tensorflow
#endif // TENSORFLOW_UTIL_NOTIFICATION_H_
|