当前位置:首页 > 单片机 > C语言与CPP编程
[导读]在《手写线程池-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
本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除( 邮箱:macysun@21ic.com )。
换一批
延伸阅读
关闭