C++ 如何同时下载多个文件

吃一堑消化不良 发布于 2016/02/17 17:38
阅读 399
收藏 0
我想设计一个程序,能同时下载多个文件,但不能影响程序性能,同时下载多文件读写会不会造成IO频繁的问题,如何处理?
加载中
0
xpbob
xpbob
你是同时下载多个文件的,你下载5次肯定要用到5次io啊,因为一个文件有一个文件描述符,不同文件不会同时出现重复的描述符,只要是多个文件那么,你直接用多线程就行了,互相各下载各的,只有对同一个文件的操作才考虑io频繁的问题,因为同一个文件多次从硬盘读取肯定没有缓存快
吃一堑消化不良
吃一堑消化不良
回复 @xpbob : 谢谢,我找到了资源监视器
xpbob
xpbob
@爱开发的小骚年 任务管理器也能看io,你看一眼吧,不过默认好像不显示,需要你选择查看内容,先放缓存说白了就是在内存里,你可以用个容器来存储你的文件,然后你再把补丁在内存进行替换,不过你得知道你的补丁要替换的地方,最后在内存中的文件就是你打过补丁的结果了,这样是可以只写一次
吃一堑消化不良
吃一堑消化不良
回复 @xpbob : 忘了说了,我的程序还包含打补丁的功能,在下载的同时打补丁,我打开任务管理器看过CPU和内存占用率都不高,所以我推测是I/O,还有下载文件可以先放缓存然后再写入文件吗,怎么做呢?
xpbob
xpbob
@爱开发的小骚年 下载一个文件也这样啊,造成卡的原因确定是文件io吗,cpu占用率,内存使用率都可能是原因,我建议先找瓶颈在哪里吧,我没见过一个下载一个文件都卡的情况,我猜测瓶颈不在io里,我见过io占的比较高的程序就是百度云了,但是他下载一个也不会很卡,但是同时下载很多,网速又很慢的情况下,确实卡的很,那时候我看io的使用率长期都在90%以上
吃一堑消化不良
吃一堑消化不良
回复 @xpbob : 限制下载个数我想到了,有没有其他能保持性能的方法,我以前光弄一个下载程序就卡的不行
下一页
0
木兰宿莽
木兰宿莽
搞个容器暂时存一下,然后统一写到磁盘里。。
返回顶部
顶部