Lines Matching full:waitableevent
12 // A WaitableEvent on POSIX is implemented as a wait-list. Currently we don't
17 // The WaitableEvent maintains a list of waiters, protected by a lock. Each
37 WaitableEvent::WaitableEvent(bool manual_reset, bool initially_signaled)
41 WaitableEvent::~WaitableEvent() {
44 void WaitableEvent::Reset() {
49 void WaitableEvent::Signal() {
66 bool WaitableEvent::IsSignaled() {
82 class SyncWaiter : public WaitableEvent::Waiter {
91 bool Fire(WaitableEvent* signaling_event) {
109 WaitableEvent* signaling_event() const {
130 // WaitableEvent doesn't think that this event has been signaled between
147 WaitableEvent* signaling_event_; // The WaitableEvent which woke us
152 bool WaitableEvent::Wait() {
156 bool WaitableEvent::TimedWait(const TimeDelta& max_time) {
178 // the WaitableEvent lock. However, this is safe because we don't lock @lock_
190 // signal would be lost on an auto-reset WaitableEvent. Thus we call
215 cmp_fst_addr(const std::pair<WaitableEvent*, unsigned> &a,
216 const std::pair<WaitableEvent*, unsigned> &b) {
221 size_t WaitableEvent::WaitMany(WaitableEvent** raw_waitables,
228 std::vector<std::pair<WaitableEvent*, size_t> > waitables;
258 // Release the WaitableEvent locks in the reverse order
271 // The address of the WaitableEvent which fired is stored in the SyncWaiter.
272 WaitableEvent *const signaled_event = sw.signaling_event();
276 // Take the locks of each WaitableEvent in turn (except the signaled one) and
300 // None of the WaitableEvent locks are held. The Waiter has not been enqueued
301 // in any of them and the return value is the index of the first WaitableEvent
305 size_t WaitableEvent::EnqueueMany
306 (std::pair<WaitableEvent*, size_t>* waitables,
335 WaitableEvent::WaitableEventKernel::WaitableEventKernel(bool manual_reset,
341 WaitableEvent::WaitableEventKernel::~WaitableEventKernel() {
347 bool WaitableEvent::SignalAll() {
364 bool WaitableEvent::SignalOne() {
379 void WaitableEvent::Enqueue(Waiter* waiter) {
387 bool WaitableEvent::WaitableEventKernel::Dequeue(Waiter* waiter, void* tag) {