1.10 双线程高效下载
1.10 双线程高效下载
基础问题:并行下载网上的资源
- 1 什么时候才算是完成任务
两个线程必须协同工作,将网络上的数据下载完毕并且完全存储到硬盘上,只有在这个时候,两个线程才能正常终止。
- 2 为了提高效率,希望两个线程能尽可能的同时工作
如果使用mutex,下载和存储线程将不能同时工作,因此Semaphore是更好的选择
- 3 下载和存储线程工作的必要条件
如果缓冲区已经满,没有足够的缓冲空间存储下载的内容,则应该停止下载,如果已经下载完毕,也没有必要继续
如果缓冲区为空,则没有必要运行存储线程,如果下载已经结束,存储线程也就可以结束了
- 4 共享缓存区的数据结构
Saying Less Doing More

浙公网安备 33010602011771号