Home | History | Annotate | Download | only in synchronization

Lines Matching refs:waitables

226   // the array of waitables by address. We actually sort a pairs so that we can
228 std::vector<std::pair<WaitableEvent*, size_t> > waitables;
229 waitables.reserve(count);
231 waitables.push_back(std::make_pair(raw_waitables[i], i));
233 DCHECK_EQ(count, waitables.size());
235 sort(waitables.begin(), waitables.end(), cmp_fst_addr);
237 // The set of waitables must be distinct. Since we have just sorted by
240 for (size_t i = 0; i < waitables.size() - 1; ++i) {
241 DCHECK(waitables[i].first != waitables[i+1].first);
246 const size_t r = EnqueueMany(&waitables[0], count, &sw);
249 // enqueued anywhere. EnqueueMany returns the count of remaining waitables
252 return waitables[count - r].second;
260 waitables[count - (1 + i)].first->kernel_->lock_.Release();
306 (std::pair<WaitableEvent*, size_t>* waitables,
311 waitables[0].first->kernel_->lock_.Acquire();
312 if (waitables[0].first->kernel_->signaled_) {
313 if (!waitables[0].first->kernel_->manual_reset_)
314 waitables[0].first->kernel_->signaled_ = false;
315 waitables[0].first->kernel_->lock_.Release();
319 const size_t r = EnqueueMany(waitables + 1, count - 1, waiter);
321 waitables[0].first->kernel_->lock_.Release();
323 waitables[0].first->Enqueue(waiter);