纣捎牟 发表于 2025-6-4 20:01:10

Github开源项目源码阅读(progschjThreadPool)

项目地址:https://github.com/progschj/ThreadPool
项目源码:

#ifndef THREAD_POOL_H
#define THREAD_POOL_H
<h1 id="include-vector">include <vector></h1>
<h1 id="include-queue">include <queue></h1>
<h1 id="include-memory">include <memory></h1>
<h1 id="include-thread">include <thread></h1>
<h1 id="include-mutex">include <mutex></h1>
<h1 id="include-condition_variable">include <condition_variable></h1>
<h1 id="include-future">include <future></h1>
<h1 id="include-functional">include <functional></h1>
<h1 id="include-stdexcept">include <stdexcept></h1>
<p>class ThreadPool {<br>
public:<br>
ThreadPool(size_t);<br>
template<class F, class... Args><br>
auto enqueue(F&& f, Args&&... args)<br>
-> std::future<typename std::result_of<F(Args...)>::type>;<br>
~ThreadPool();<br>
private:<br>
// need to keep track of threads so we can join them<br>
std::vector< std::thread > workers;<br>
// the task queue<br>
std::queue< std::function<void()> > tasks;</p>
// synchronization
std::mutex queue_mutex;
std::condition_variable condition;
bool stop;};

// the constructor just launches some amount of workers
inline ThreadPool::ThreadPool(size_t threads)
:   stop(false)
{
for(size_t i = 0;i
页: [1]
查看完整版本: Github开源项目源码阅读(progschjThreadPool)