C语言线程池原理介绍

为什么要用线程池?

多线程适用于小型的局域网络中,但在大型的局域网或者互联网的规模下,线程的创建和销毁,都涉及到系统调用,比较消耗系统资源,所以就引入了线程池技术,避免频繁的线程创建和销毁。

 

线程池是一个抽象的概念,一般小型项目用不到,我也只能算是了解的水平,所以尽我所能的用一个简单的方式描述,懂得原理,真实使用的时候也就方便多了,开始了……

 

线程池里有一些空的线程,这个数量是有限的,它的数量由创建时设定。其中的线程可以循环利用,不需要重复的创建与销毁。

把线程池比作一个加工厂,要运行的代码比作原材料,CPU是加工原料的机器,里边的这些线程比作运输材料的卡车,当然还有一个存放原材料的仓库(任务队列)。 

我们的目的,是要将原料通过加工厂加工(执行程序)。

首先将原材料,按顺序放入仓库中,我们卡车,从仓库取出原材料,运送到加工机里。

卡车是数量是固定的,加工的机器数量也是固定的。

启动多少台卡车工作要根据仓库中的原材料的多少。

卡车的状态,正在工作的卡车,等待装车的卡车,等待熄火的卡车,还有没有发动的卡车。

仓库的容量有限,当仓库堆满后,在里边有空间之前,其他的原材料不可以再进来了。(进行阻塞)

仓库中的原材料会按照先进先加工的规则进行。

当仓库里的材料加工没了,停在仓库门口,等待装在原材料的卡车还在待命,这也是不行的,需要让他们"熄火",只留下个别“待命”(也要进行一个阻塞)

 

系统性介绍线程池(含代码)的博客传送门

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值