手写线程池 - C 版
时间:2021-10-14 16:55:09
手机看文章
扫描二维码
随时随地手机看文章
[导读]在《手写线程池-C语言版》中,已经实现了C语言版的线程池,如果我们也学过C的话,可以将其改为C版本,这样代码不管是从使用还是从感观上都会更简洁一些。对这些代码做从C到C的迁移主要用到了C三大特性中的封装,因此难度不大,对应C初学者来说有助于提高编码水平和对面向对象的理解,对于熟练...
在《手写线程池 - C语言版》中,已经实现了 C 语言版的线程池,如果我们也学过 C 的话,可以将其改为 C 版本,这样代码不管是从使用还是从感观上都会更简洁一些。对这些代码做从 C 到 C 的迁移主要用到了 C 三大特性中的封装,因此难度不大,对应 C 初学者来说有助于提高编码水平和对面向对象的理解,对于熟练掌握了 C 的人来说就是
张飞吃豆芽 -- 小菜一碟(so easy)。关于线程的在此就不再过多阐述,对于前面文章中设计的线程池,按照面向对象的思想进行拆分可以分为两部分(纯属个人见解,有不同的想法也正常):任务队列类 和线程池类。1. 任务队列
1.1 类声明
// 定义任务结构体
using callback = void(*)(void*);
struct Task
{
Task()
{
function = nullptr;
arg = nullptr;
}
Task(callback f, void* arg)
{
function = f;
this->arg = arg;
}
callback function;
void* arg;
};
// 任务队列
class TaskQueue
{
public:
TaskQueue();
~TaskQueue();
// 添加任务
void addTask(Task 




