#include <folly/MoveWrapper.h>
#include <glog/logging.h>
-#include <folly/io/async/EventBaseManager.h>
#include <folly/detail/MemoryIdler.h>
IOThreadPoolExecutor::IOThreadPoolExecutor(
size_t numThreads,
- std::shared_ptr<ThreadFactory> threadFactory)
+ std::shared_ptr<ThreadFactory> threadFactory,
+ EventBaseManager* ebm)
: ThreadPoolExecutor(numThreads, std::move(threadFactory)),
- nextThread_(0) {
+ nextThread_(0),
+ eventBaseManager_(ebm) {
addThreads(numThreads);
CHECK(threadList_.get().size() == numThreads);
}
void IOThreadPoolExecutor::threadRun(ThreadPtr thread) {
const auto ioThread = std::static_pointer_cast<IOThread>(thread);
- ioThread->eventBase =
- folly::EventBaseManager::get()->getEventBase();
+ ioThread->eventBase = eventBaseManager_->getEventBase();
thisThread_.reset(new std::shared_ptr<IOThread>(ioThread));
auto idler = new MemoryIdlerTimeout(ioThread->eventBase);
#pragma once
-#include <folly/io/async/EventBase.h>
+#include <folly/io/async/EventBaseManager.h>
#include <folly/wangle/concurrent/IOExecutor.h>
#include <folly/wangle/concurrent/ThreadPoolExecutor.h>
explicit IOThreadPoolExecutor(
size_t numThreads,
std::shared_ptr<ThreadFactory> threadFactory =
- std::make_shared<NamedThreadFactory>("IOThreadPool"));
+ std::make_shared<NamedThreadFactory>("IOThreadPool"),
+ EventBaseManager* ebm = folly::EventBaseManager::get());
~IOThreadPoolExecutor();
size_t nextThread_;
ThreadLocal<std::shared_ptr<IOThread>> thisThread_;
+ EventBaseManager* eventBaseManager_;
};
}} // folly::wangle