目前在做一个Win32API的 文件传输的客户端, 用户可以上传/下载 任意多的文件, 每个文件都用一个单独的线程来处理,
我希望能把并发的线程数量限制到一个数量,比如最大20, 以避免占用太大的内存和cpu. 具体的说: 如果用户选择上传100个文件,那么开始时会开辟20个thread来处理20个文件的传输, 其他80个文件需要排队等待,等前面的某个线程结束后, 第21, 22..个文件会依次开始传输.我对windows线程部分了解很少,在网上初步查了一下, 大约感觉可能有下面几种方式:
1. 全局变量的方法, 开辟新的线程就++,  线程结束就--
2. Thread pool (具体怎么做还不清楚 :)
3. 信号量???请大家给出一个解决的最佳方案, 说明采用什么技术比较好, 谢谢了.

解决方案 »

  1.   

    因为是用Win32 API来开发, 所以想知道这种情况的最佳解决方案是什么? 请大家分析一下.谢谢. 
      

  2.   

    线程池,可以参考下《windows核心编程》
      

  3.   

    2. Thread pool (具体怎么做还不清楚 :) 具体做法类似于你1所说的。可以上网找些例子看看。
      

  4.   

    这个问题比较好的方式就是线程池啊 看这个例子行不行http://download.csdn.net/source/1377074
      

  5.   

    典型的生产者消费者问题1.用线程池
    2.使用信号量控制线程数目
    可以参考windows 核心编程
      

  6.   

    1.用线程池 
    2.使用信号量控制线程数目 
    可以参考windows 核心编程