Home | History | Annotate | Download | only in base

Lines Matching refs:queue

190   WorkQueue queue(kThreadCount);  // Start the threads.
197 AutoLock auto_lock(*queue.lock());
198 while (!queue.EveryIdWasAllocated())
199 queue.all_threads_have_ids()->Wait();
209 AutoLock auto_lock(*queue.lock());
210 EXPECT_EQ(0, queue.GetNumThreadsTakingAssignments());
211 EXPECT_EQ(0, queue.GetNumThreadsCompletingTasks());
212 EXPECT_EQ(0, queue.task_count());
213 EXPECT_EQ(0, queue.GetMaxCompletionsByWorkerThread());
214 EXPECT_EQ(0, queue.GetMinCompletionsByWorkerThread());
215 EXPECT_EQ(0, queue.GetNumberOfCompletedTasks());
218 queue.ResetHistory();
219 queue.SetTaskCount(kTaskCount);
220 queue.SetWorkTime(kThirtyMs);
221 queue.SetAllowHelp(false);
226 queue.work_is_available()->Signal(); // Start up one thread.
231 AutoLock auto_lock(*queue.lock());
232 while (queue.task_count())
233 queue.no_more_tasks()->Wait();
236 EXPECT_LE(queue.GetWorkTime().InMilliseconds() * (kTaskCount - 1),
239 EXPECT_EQ(1, queue.GetNumThreadsTakingAssignments());
240 EXPECT_EQ(1, queue.GetNumThreadsCompletingTasks());
241 EXPECT_LE(kTaskCount - 1, queue.GetMaxCompletionsByWorkerThread());
242 EXPECT_EQ(0, queue.GetMinCompletionsByWorkerThread());
243 EXPECT_LE(kTaskCount - 1, queue.GetNumberOfCompletedTasks());
249 AutoLock auto_lock(*queue.lock());
250 if (kTaskCount == queue.GetNumberOfCompletedTasks())
258 AutoLock auto_lock(*queue.lock());
259 EXPECT_EQ(1, queue.GetNumThreadsTakingAssignments());
260 EXPECT_EQ(1, queue.GetNumThreadsCompletingTasks());
261 EXPECT_EQ(0, queue.task_count());
262 EXPECT_EQ(kTaskCount, queue.GetMaxCompletionsByWorkerThread());
263 EXPECT_EQ(0, queue.GetMinCompletionsByWorkerThread());
264 EXPECT_EQ(kTaskCount, queue.GetNumberOfCompletedTasks());
268 queue.ResetHistory();
269 queue.SetTaskCount(kTaskCount);
270 queue.SetWorkTime(kThirtyMs);
271 queue.SetAllowHelp(true);
276 queue.work_is_available()->Signal(); // But each worker can signal another.
280 AutoLock auto_lock(*queue.lock());
281 if (kTaskCount == queue.GetNumberOfCompletedTasks())
289 AutoLock auto_lock(*queue.lock());
290 while (queue.task_count())
291 queue.no_more_tasks()->Wait();
295 EXPECT_GT(queue.GetWorkTime().InMilliseconds() * (kTaskCount - 1),
300 EXPECT_LE(2, queue.GetNumThreadsTakingAssignments());
301 EXPECT_EQ(kTaskCount, queue.GetNumberOfCompletedTasks());
304 queue.ResetHistory();
305 queue.SetTaskCount(3);
306 queue.SetWorkTime(kThirtyMs);
307 queue.SetAllowHelp(false);
309 queue.work_is_available()->Broadcast(); // Make them all try.
314 AutoLock auto_lock(*queue.lock());
315 EXPECT_EQ(3, queue.GetNumThreadsTakingAssignments());
316 EXPECT_EQ(3, queue.GetNumThreadsCompletingTasks());
317 EXPECT_EQ(0, queue.task_count());
318 EXPECT_EQ(1, queue.GetMaxCompletionsByWorkerThread());
319 EXPECT_EQ(0, queue.GetMinCompletionsByWorkerThread());
320 EXPECT_EQ(3, queue.GetNumberOfCompletedTasks());
323 queue.ResetHistory();
324 queue.SetTaskCount(3);
325 queue.SetWorkTime(kThirtyMs);
326 queue.SetAllowHelp(true); // Allow (unnecessary) help requests.
328 queue.work_is_available()->Broadcast(); // We already signal all threads.
333 AutoLock auto_lock(*queue.lock());
334 EXPECT_EQ(3, queue.GetNumThreadsTakingAssignments());
335 EXPECT_EQ(3, queue.GetNumThreadsCompletingTasks());
336 EXPECT_EQ(0, queue.task_count());
337 EXPECT_EQ(1, queue.GetMaxCompletionsByWorkerThread());
338 EXPECT_EQ(0, queue.GetMinCompletionsByWorkerThread());
339 EXPECT_EQ(3, queue.GetNumberOfCompletedTasks());
342 queue.ResetHistory();
343 queue.SetTaskCount(20);
344 queue.SetWorkTime(kThirtyMs);
345 queue.SetAllowHelp(true);
347 queue.work_is_available()->Signal(); // But each worker can signal another.
352 AutoLock auto_lock(*queue.lock());
353 EXPECT_EQ(10, queue.GetNumThreadsTakingAssignments());
354 EXPECT_EQ(10, queue.GetNumThreadsCompletingTasks());
355 EXPECT_EQ(0, queue.task_count());
356 EXPECT_EQ(2, queue.GetMaxCompletionsByWorkerThread());
357 EXPECT_EQ(2, queue.GetMinCompletionsByWorkerThread());
358 EXPECT_EQ(20, queue.GetNumberOfCompletedTasks());
361 queue.ResetHistory();
362 queue.SetTaskCount(20); // 2 tasks per process.
363 queue.SetWorkTime(kThirtyMs);
364 queue.SetAllowHelp(true);
366 queue.work_is_available()->Broadcast();
371 AutoLock auto_lock(*queue.lock());
372 EXPECT_EQ(10, queue.GetNumThreadsTakingAssignments());
373 EXPECT_EQ(10, queue.GetNumThreadsCompletingTasks());
374 EXPECT_EQ(0, queue.task_count());
375 EXPECT_EQ(2, queue.GetMaxCompletionsByWorkerThread());
376 EXPECT_EQ(2, queue.GetMinCompletionsByWorkerThread());
377 EXPECT_EQ(20, queue.GetNumberOfCompletedTasks());
379 queue.SetShutdown();
381 queue.work_is_available()->Broadcast(); // Force check for shutdown.
384 queue.ThreadSafeCheckShutdown(kThreadCount));
390 WorkQueue queue(kThreadCount); // Start the threads.
397 AutoLock auto_lock(*queue.lock());
398 while (!queue.EveryIdWasAllocated())
399 queue.all_threads_have_ids()->Wait();
407 AutoLock auto_lock(*queue.lock());
408 EXPECT_EQ(0, queue.GetNumThreadsTakingAssignments());
409 EXPECT_EQ(0, queue.GetNumThreadsCompletingTasks());
410 EXPECT_EQ(0, queue.task_count());
411 EXPECT_EQ(0, queue.GetMaxCompletionsByWorkerThread());
412 EXPECT_EQ(0, queue.GetMinCompletionsByWorkerThread());
413 EXPECT_EQ(0, queue.GetNumberOfCompletedTasks());
416 queue.ResetHistory();
417 queue.SetTaskCount(20 * kThreadCount);
418 queue.SetWorkTime(kFortyFiveMs);
419 queue.SetAllowHelp(false);
421 queue.work_is_available()->Broadcast(); // Start up all threads.
424 AutoLock auto_lock(*queue.lock());
425 while (queue.task_count() != 0)
426 queue.no_more_tasks()->Wait();
434 queue.GetNumberOfCompletedTasks());
439 AutoLock auto_lock(*queue.lock());
440 EXPECT_EQ(kThreadCount, queue.GetNumThreadsTakingAssignments());
441 EXPECT_EQ(kThreadCount, queue
442 EXPECT_EQ(0, queue.task_count());
443 EXPECT_LE(20, queue.GetMaxCompletionsByWorkerThread());
444 EXPECT_EQ(20 * kThreadCount, queue.GetNumberOfCompletedTasks());
447 queue.ResetHistory();
448 queue.SetTaskCount(kThreadCount * 4);
449 queue.SetWorkTime(kFortyFiveMs);
450 queue.SetAllowHelp(true); // Might outperform Broadcast().
452 queue.work_is_available()->Signal(); // Start up one thread.
456 AutoLock auto_lock(*queue.lock());
457 while (queue.task_count() != 0)
458 queue.no_more_tasks()->Wait();
466 queue.GetNumberOfCompletedTasks());
471 AutoLock auto_lock(*queue.lock());
472 EXPECT_EQ(kThreadCount, queue.GetNumThreadsTakingAssignments());
473 EXPECT_EQ(kThreadCount, queue.GetNumThreadsCompletingTasks());
474 EXPECT_EQ(0, queue.task_count());
475 EXPECT_LE(4, queue.GetMaxCompletionsByWorkerThread());
476 EXPECT_EQ(4 * kThreadCount, queue.GetNumberOfCompletedTasks());
478 queue.SetShutdown();
480 queue.work_is_available()->Broadcast(); // Force check for shutdown.
484 queue.ThreadSafeCheckShutdown(kThreadCount));
714 // Get our task duration from the queue.