类 faiss::WorkerThread

class WorkerThread

公共函数

WorkerThread()
~WorkerThread()

停止并等待工作线程退出,刷新所有挂起的 lambda 表达式

void stop()

请求工作线程自行停止。

void waitForThreadExit()

在当前线程中阻塞等待工作线程停止

std::future<bool> add(std::function<void()> f)

添加一个 lambda 表达式以在工作线程上运行;返回一个 future,可用于阻塞其完成。 如果 lambda 表达式在工作线程中运行,则 future 状态为 true; 如果 lambda 表达式未运行,则 future 状态为 false,因为工作线程正在退出或已退出。

私有函数

void startThread()
void threadMain()
void threadLoop()

私有成员

std::thread thread_

所有排队的 lambda 表达式都在其上运行的线程。

std::mutex mutex_

队列和退出状态的互斥锁。

std::condition_variable monitor_

退出状态和队列的监视器。

bool wantStop_

我们是否希望线程退出。

std::deque<std::pair<std::function<void()>, std::promise<bool>>> queue_

要调用的挂起 lambda 表达式的队列。