C++ 线程池小程序
文件列表
mythreadpoll.h
mythreadpoll.cpp
源码
mythreadpoll.h
#pragma once
#include <functional>
#include <mutex>
#include <vector>
#include <deque>
#include <atomic>
using namespace std;
class mythreadpoll
{
private:
int _thread_num = 0;
mutex m;
condition_variable c;
deque< std::function<void()>> tasks;
vector<thread> vec_tread;
int exec_task_count = 0;
public:
atomic<bool> can_run ;
public:
mythreadpoll(int num);
void run();
void addtask(function<void()>& f);
void dotask();
void stoprun();
bool isstoprun();
};
mythreadpoll.cpp
#include "mythreadpoll.h"
#include <iostream>
mythreadpoll::mythreadpoll(int num)
{
_thread_num = num;
}
void mythreadpoll::run()
{
can_run.store(true);
for(int i = 0; i<