“多线程下载”情形下的程序结构设计

方案一

建立消息队列,任务队列的读、写都需要加锁,任务的添加是由主线程进行的,消息的读取是由下载线程执行的,下载线程的执行函数是死循环,一个任务执行完成后便读取下一个任务,主要的开销是锁带来的。

方案二

在主线程中添加任务,同时,分配任务也是由主线程完成的。
执行线程执行完一个任务后即退出,并通知主线程,主线程得知其空闲后,将剩下的任务分配给空闲线程处理。执行线程的主动权交给了主线程,整个过程不需要加锁。也不需要考虑锁可能带来的问题。
拓展:可以将任务的分配放到任何一个独立的、具有事件循环的线程中。

猜你喜欢

转载自blog.csdn.net/u012790503/article/details/66472646
今日推荐