一、首先,强调一些比较重要的概念。
【一】 信号量的原子操作(PV):
1、值大于0:干活,有可用资源,并将其值减一。
a、减一后为0:下次等待
b、减一后不为0:下次干活
2、值为0:等待
【二】再次说说什么时候回引起信号量的本次状态为等待 状态?
1、初始值为0值
2、上一次状态 使其值减到0.
二、模块概述:
执行大量任务的实时下载。这里实时主要是指设计成快速响应任务,不堆积任务。
再详细介绍一下这里所说的实时,就是不会让真正的下载程序空闲,本模块中使用wget完成下载任务。只要任务数量不为0,wget就会下载,下载完一个任务,马上会自动下载下一个任务,中间不会有空闲时间。
也就是说,当任务数量不为0的时候,wget的状态会一直是下载。
再来看看,下载任务的特点:
1、下载任务瞬间会产生很多
2、每一个下载任务大小在10K一下
3、需要快速被下载完成
最后下载完的任务通过消息机制回送给请求模块。
三、模块思路:
设计7个信号量,分别为: