Commit 8b3f89ae authored by Dave Watson's avatar Dave Watson Committed by JoelMarcey

remove Cpp2WorkerFactory

Summary:
In preparation for a global IOThreadPoolExecutor - we can't override the workerFactory if we are using a global one.

Instead, add a new getEventBases() to IOTHreadPoolExecutro and just run code on each eventBase.  For shutdown, explicitly add a stop(), instead of doing the work after loop() as exited

Cpp2Worker required minor changes to be able to use EventBaseManager's eventbase vs. their own

Test Plan: fbconfig -r thrift/lib/cpp2; fbmake runtests

Reviewed By: jsedgwick@fb.com

Subscribers: trunkagent, andrewcox, doug, fugalh, alandau, bmatheny, mshneer, folly-diffs@

FB internal diff: D1734795

Signature: t1:1734795:1418759367:b45f419e5cbc482a64a5873d9e00e3bcb071db5a
parent c1a244da
......@@ -153,6 +153,16 @@ void IOThreadPoolExecutor::stopThreads(size_t n) {
}
}
std::vector<EventBase*> IOThreadPoolExecutor::getEventBases() {
std::vector<EventBase*> bases;
RWSpinLock::ReadHolder{&threadListLock_};
for (const auto& thread : threadList_.get()) {
auto ioThread = std::static_pointer_cast<IOThread>(thread);
bases.push_back(ioThread->eventBase);
}
return bases;
}
// threadListLock_ is readlocked
uint64_t IOThreadPoolExecutor::getPendingTaskCount() {
uint64_t count = 0;
......
......@@ -41,6 +41,8 @@ class IOThreadPoolExecutor : public ThreadPoolExecutor, public IOExecutor {
EventBase* getEventBase() override;
std::vector<EventBase*> getEventBases();
private:
struct FOLLY_ALIGN_TO_AVOID_FALSE_SHARING IOThread : public Thread {
IOThread(IOThreadPoolExecutor* pool)
......
......@@ -44,6 +44,10 @@ class NamedThreadFactory : public ThreadFactory {
prefix_ = prefix.str();
}
std::string getNamePrefix() {
return prefix_;
}
private:
std::string prefix_;
std::atomic<uint64_t> suffix_;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment