Console Library 8.0.0
A header-only library that makes C++ simple
Loading...
Searching...
No Matches
pool.h File Reference

简单的线程池实现,模仿了 Python 的 concurrent.futures.ThreadPoolExecutor 接口。 More...

#include <atomic>
#include <condition_variable>
#include <functional>
#include <future>
#include <memory>
#include <mutex>
#include <queue>
#include <thread>
#include <type_traits>
#include <utility>
#include <vector>
#include "../core/csexc.h"

Go to the source code of this file.

Classes

class  console::ThreadPool
 线程池执行器类,用于管理和执行并发任务。 More...
struct  console::ThreadPool::TaskBase
 任务基类,提供多态接口。 More...
struct  console::ThreadPool::Task< T >
 具体任务类模板,封装 std::packaged_task。 More...

Namespaces

namespace  console
 本库所有组件所在的顶层命名空间。
namespace  console::pool

Functions

ThreadPool & console::pool::instance ()
 获取线程池单例。
template<class F, class... Args>
auto console::pool::submit (F &&f, Args &&...args) -> std::future< decltype(std::forward< F >(f)(std::forward< Args >(args)...))>
 提交任务到线程池。
template<class F, class Container>
auto console::pool::map (F &&f, const Container &c) -> std::vector< std::future< decltype(f(std::declval< typename Container::value_type >()))> >
 对容器中的元素应用函数,并返回结果的 future 对象。
void console::pool::wait ()
 等待所有任务完成。
size_t console::pool::waiting_task_count ()
 获取等待执行的任务数量。
size_t console::pool::active_task_count ()
 获取当前正在执行的任务数量。
size_t console::pool::active_worker_count ()
 获取当前正在执行的工作线程数量。
void console::pool::close ()
 关闭线程池。
void console::pool::abort ()
 中止线程池。
template<class F, class... Args>
auto console::async (F &&f, Args &&...args) -> std::future< decltype(std::forward< F >(f)(std::forward< Args >(args)...))>
 提交一个可调用对象到全局线程池执行。

Detailed Description

简单的线程池实现,模仿了 Python 的 concurrent.futures.ThreadPoolExecutor 接口。

该模块提供了一个高效的线程池实现,支持任务提交、批量映射执行、 等待所有任务完成、优雅关闭等功能。适用于需要并发执行多个独立任务的场景。

Author
MrXie1109
Date
2026