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