5000个图片编号1-5000,用50个线程去下载编号为1-50的图片,下载完后用这50个线程继续下载编号为51-100的图片……

解决方案 »

  1.   

    多线程完成多个任务 
      

  2.   

    5000个图片编号1....5000,用一个变量控制,每个线程下一个图片相应的变量加1,做好互斥,应该就可以了
      

  3.   

    这个线程间没有通信,还好吧。50个图片下完了后再开始下50个
      

  4.   

    可以自己划分任务。建立50个容器,每个容器分配一个线程,每个容器内就是所需要下载的图片。
      

  5.   

    1.在任何程序都不要做大于10以上的线程的操作。(浪费系统切换时间)
    2.对于多任务作业(你的图片)建立个任务队列 (注意内存泄漏)
    3.线程自动切换读取队列中数据完成任务就可以。
     具体代码不能给你了 。不过估计你自己写还是费劲 找个会的人帮你吧。
      

  6.   

    分文件.如50个线程 每个线程分别下载100个.
      

  7.   

    你首先要考虑的问题是线程的切换问题。大量的线程切换性能不会很高。尽量避免过多的创建线程,而采用线程池
      

  8.   

    解决方法有很多,如果采用线程池的思想就是:
    一开始就创建50个线程,所有线程从一个队列中获取下载任务,如果队列为空,没有任务,就等待一个事件对象,挂起。当主线程向ListCtrl添加一个URL时,也向队列中添加这个URL,然后激活事件。事件已激活,就有一个线程被释放,该线程从队列中取得URL进行下载,下载完后检查队列是否为空,还有没有任务,有的话取出URL来再下载,没有的话等待事件对象,挂起。要注意的是多个线程访问队列这里,还需要一个临界锁或互斥量来同步一下。如果已经有5000个URL了,再创建线程进行下载的话就更简单了,比如5000个URL放在一个数组a里,用一个全局变量g记录当前下载到第几个了,创建50个线程,每个线程下载前取一个URL,CString strUrl = a[g];然后g++;
    然后进行下载,下载完了再取一个URL,直到g==5000; 访问a和g的时候做好线程同步就行了。方法还有很多,思路还有很多,不仅限于这几种