一个简单的线程池的实现

    因工作需要,需要写一个简单的线程池,一开始觉得无从下手,待慢慢理清思路,写代码就很顺利了,先将这个线程池实现思路简单的贴一下,主要有init_pool(), rounted(), add_work(), void *woke(),  destory_pool()等函数:

    init_pool():完成线程池的初始化工作。主要工作有:初始化任务队列,初始化锁,初始化条件锁,初始化线程,并给线程注册rounted()函数,使各线程执行rounted函数。

    rouned() :各个线程创建后执行此函数,此函数中是一个死循环,线程进入循环后,先判断是否有任务,有则将任务从任务队列中取出执行(任务中含有要执行的函数指针即void *woke()和相关参数),任务数减一,没有任务则阻塞住,等待有任务时触发条件锁然后继续执行该任务。

    add_work():此函数是向任务队列中添加任务,即添加线程实际执行的函数指针以及该函数指针需要的参数,任务数加一。

    void *woke():此函数指针是我们实际需要执行的函数,定义为指针是方便向线程传递。

    destory_pool():此函数的主要是销毁线程池,等待子线程结束后,销毁各种资源。

    上述是一个简单的线程池的实现,理清了思路,写代码就不是问题了。

    Ps:学会积累,学会沉淀。


你可能感兴趣的:(线程池,实现,线程池实现,简单线程池)