免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2505 | 回复: 6
打印 上一主题 下一主题

多线程下载问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-07-30 02:36 |只看该作者 |倒序浏览
最近要做个多线程下载软件 问下

可不可以几个线程同时写一个文件?
是不是应该在主线程打开文件,等所有线程写完文件(下载完),再在主线程关闭文件?

我不想使用那种先几个线程写几个文件 再合并,所以是先开一个一样大的文件 再几个线程同时写
但会不会线程发生冲突。?

论坛徽章:
0
2 [报告]
发表于 2007-07-30 08:48 |只看该作者
fstream写文件不是线程安全的吧?
你可以给每个下载线程分配一个缓冲区,下载内容先放在缓冲区
线程对应的缓冲区填满了后互斥写文件

论坛徽章:
0
3 [报告]
发表于 2007-07-30 08:55 |只看该作者
文件不就一个位置指针吗 怎么能多线程下载啊 我很菜 还请牛牛指教

论坛徽章:
0
4 [报告]
发表于 2007-07-30 10:02 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
5 [报告]
发表于 2007-07-30 12:41 |只看该作者
原帖由 jamesr 于 2007-7-30 10:02 发表
#可不可以几个线程同时写一个文件?
可以,先建一个有空洞的文件,然后mmap或者readv、writev
#是不是应该在主线程打开文件,等所有线程写完文件(下载完),再在主线程关闭文件?
这个你自己想,如果提前关 ...

我的意思是 是在每个线程内打开关闭文件 还是在主线程通一打开关闭

论坛徽章:
0
6 [报告]
发表于 2007-07-30 15:00 |只看该作者
原帖由 fcloudf 于 2007-7-30 08:55 发表
文件不就一个位置指针吗 怎么能多线程下载啊 我很菜 还请牛牛指教


man 2 pwrite

论坛徽章:
0
7 [报告]
发表于 2007-07-30 15:01 |只看该作者
原帖由 simonsoft 于 2007-7-30 12:41 发表

我的意思是 是在每个线程内打开关闭文件 还是在主线程通一打开关闭


统一打开关闭吧。
其实都可以。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP