我想实现单生产者和多消费者模式的多文件下载。
我的现有情况是: - 代码在循环中查找要下载的新链接 - 当找到新链接时,它调用下载函数 - 下载函数接受源文件路径和目标文件路径,并下载该文件。
我想做的是: - 同时下载X个文件(我不知道文件的总数) - 随时都应该能够同时下载X个文件-只要X个文件中的任何一个下载完成,调用函数就应该能够立即添加新的下载,然后立即开始下载。
具体实现:
我的现有情况是: - 代码在循环中查找要下载的新链接 - 当找到新链接时,它调用下载函数 - 下载函数接受源文件路径和目标文件路径,并下载该文件。
我想做的是: - 同时下载X个文件(我不知道文件的总数) - 随时都应该能够同时下载X个文件-只要X个文件中的任何一个下载完成,调用函数就应该能够立即添加新的下载,然后立即开始下载。
具体实现:
- 所以我有一个生产者函数,它不断向队列中添加新的下载(最多同时进行X个下载)
- 多个X线程消耗下载并单独开始下载。一旦下载完成,生产者应该能够添加新的下载,这将产生新的线程。
TryTake
方法时,该项将从线程安全集合中移除。其他消费者没有机会获取到该项。 - Aaron Hudon