/mordor/workerpool.cpp
C++ | 41 lines | 32 code | 8 blank | 1 comment | 2 complexity | 80902fa88235c9003d7765de99f539a1 MD5 | raw file
Possible License(s): BSD-3-Clause
- // Copyright (c) 2009 - Mozy, Inc.
- #include "workerpool.h"
- #include "fiber.h"
- #include "log.h"
- namespace Mordor {
- static Logger::ptr g_log = Log::lookup("mordor:workerpool");
- WorkerPool::WorkerPool(size_t threads, bool useCaller, size_t batchSize)
- : Scheduler(threads, useCaller, batchSize)
- {
- start();
- }
- void
- WorkerPool::idle()
- {
- while (true) {
- if (stopping()) {
- return;
- }
- m_semaphore.wait();
- try {
- Fiber::yield();
- } catch (OperationAbortedException &) {
- return;
- }
- }
- }
- void
- WorkerPool::tickle()
- {
- MORDOR_LOG_DEBUG(g_log) << this << " tickling";
- m_semaphore.notify();
- }
- }