关于文件的多线程传输?

XiaoTobey 2013-05-06 04:31:43
最近在写一个文件传输软件了,但是看到有的代码中写的多线程传输,就是建立个线程然后在在创建的线程中线程中进行内存映射调用MapViewOfFile()函数,send()函数。这样就算是多线程传输吗?那飞鸽传书用的是多线程传输吗?
...全文
269 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
youngwolf 2013-05-08
  • 打赏
  • 举报
回复
https://github.com/youngwolf-project/st_asio_wrapper 网络采用boost.asio,文件传输是多线程分块传送,如果只是关注如何多线程传送文件的话,可以看看。
XiaoTobey 2013-05-08
  • 打赏
  • 举报
回复
好吧,我只能说看完你们的解释,我更糊涂了!
  • 打赏
  • 举报
回复
引用 6 楼 crbrave 的回复:
我在整理一下我的问题吧,首先像http下载的实现方法,分成几块分别起几个线程传输是多线程传输。但是像飞鸽传书一样,在每次传输65536个字节的时候都起了一个线程,传输后结束线程。然后扫描消息队列继续起下一个线程,它起的这些线程调用的socket都是相同的啊!这种传输方法算是多线程传输吗?
以前看过飞鸽源代码,但现在忘了。 多线程传送: 我的理解就是把一个文件分成几块,然后开启合适的线程数然后进行数据传送。 你说的 分成几块分别起几个线程传输是多线程传输 我觉得不对。 我觉得用文件映射 + 多线程 只是为了加快文件读取。 如果文件读取速度很快的,多线程传送和单线程传送的速度 应该差不多,单线程应该更快一些。
  • 打赏
  • 举报
回复
引用 4 楼 tiankong_bear 的回复:
我也在研究类似问题,碰到一个疑难杂症。求教。 http://bbs.csdn.net/topics/390449454
我的觉得应该是你的竞争,确保每一个线程读数据的时候,偏移都是唯一。
XiaoTobey 2013-05-07
  • 打赏
  • 举报
回复
我在整理一下我的问题吧,首先像http下载的实现方法,分成几块分别起几个线程传输是多线程传输。但是像飞鸽传书一样,在每次传输65536个字节的时候都起了一个线程,传输后结束线程。然后扫描消息队列继续起下一个线程,它起的这些线程调用的socket都是相同的啊!这种传输方法算是多线程传输吗?
XiaoTobey 2013-05-07
  • 打赏
  • 举报
回复
引用 3 楼 wer85121430 的回复:
对啊,怎么分块,什么情况分出线程个数都是看你这块逻辑怎么写啊? 然后客户端在怎么把它组合起来。
那飞鸽传书算是 多线程 传输吗? 为什么他的socket的都是相同的啊?
  • 打赏
  • 举报
回复
这个多线程应该是客户端启动多个线程, 对服务端进行多个connect。每个connect请求不同的文件块。服务器就accept一个连接根据请求启动线程,发送数据,被动的多线程了。
  • 打赏
  • 举报
回复
对同一个socket。 对服务端来说就是accept返回的那个socket。 一般都会用多线程的。
tiankong_bear 2013-05-06
  • 打赏
  • 举报
回复
我也在研究类似问题,碰到一个疑难杂症。求教。 http://bbs.csdn.net/topics/390449454
  • 打赏
  • 举报
回复
对啊,怎么分块,什么情况分出线程个数都是看你这块逻辑怎么写啊? 然后客户端在怎么把它组合起来。
XiaoTobey 2013-05-06
  • 打赏
  • 举报
回复
引用 1 楼 ouyh12345 的回复:
是啊,就是把文件分块传输,然后组装
要是这样的话 ,他可以分出线程的个数取决于文件的大小? http下载的多线程传输的原理也是这样的??
ouyh12345 2013-05-06
  • 打赏
  • 举报
回复
是啊,就是把文件分块传输,然后组装

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧