源码可在https://github.com/learnmoreonce/SLAM 下载
文件:common/thread_pool.h
#ifndef CARTOGRAPHER_COMMON_THREAD_POOL_H_
#define CARTOGRAPHER_COMMON_THREAD_POOL_H_
#include <deque>
#include <functional>
#include <thread>
#include <vector>
#include "cartographer/common/mutex.h"
namespace cartographer {
namespace common {
/*
ThreadPool 是对c++11 thread的封装.
ThreadPool是线程数量固定的线程池,不可拷贝 和复制.
1,构造函数ThreadPool(int num_threads) 初始化一个线程数量固定的线程池。
2,Schedule(std::function<void()> work_item)添加想要ThreadPool执行的函数,
std::thread会在线程后台依次排队执行相关函数.
3,数据成员pool_是具体的线程,work_queue_是待执行的函数队列。
*/
// A fixed number of threads working on a work queue of work items. Adding a
// new work item does not block, and will be executed by a background thread
// eventually. The queue must be empty before calling the destructor. The thread