我不赞同楼主以最慢的作为基准的想法。比如有100个文件,10根线程同时执行,进度条从0到100,每根线程每导完一个文件,去把进度条当前值+1,全部传输完整好100点

解决方案 »

  1.   

    我用到一个笨办法,就是调用的函数虽然一样,我把不同线程调用的函数名称区别开来,相当于是把相同的函数命名不同几个,每个线程分别调用一个函数,就可以区分线程调用的函数了
      

  2.   

    尝试下改变思路,不要一开始就把任务分配好,而是线程动态去取任务
    哪个线程执行的快,就可以多执行几个任务,执行慢的少执行几个
    避免因为其中一个线程慢,影响所有任务的进度.先把任务放队列里,线程开始任务之前去取,取出一个,就在队列里删除,然后开始执行耗时的代码
    对队列的操作加锁
      

  3.   

    线程数量不是和cpu有关吗你2核心的cpu开那么多线程不知道效率怎么样int 总进度=100;
    int 当前进度=0;线程调用方法{
    ...
    当前进度++;
      

  4.   

    开多少线程合适得看线程到底在干什么.
    如果是执行非常快的逻辑,开多了反而影响效率.
    如果10秒里有9.999秒都在等通信的另一方响应,开100个线程也是都在等着.