我用多线程实现了一个文件转换功能,为什么转换速度还是没有提高呢,和单线程一样

lingling_jy 2012-05-29 12:53:15
请高手指点下!
...全文
148 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
CSharpProgrammer 2012-05-30
  • 打赏
  • 举报
回复
楼主,转换文件一般瓶颈都在磁盘IO上,你换个固态硬盘试试就知道了。
dceacho 2012-05-29
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]

你可以给我再讲具体一点吗? 谢谢
[/Quote]

4楼说的比较容易理解了

并行工作时发生资源等待和资源争夺的情况几率有多大

例如的文件转换需要操作IO,但即使你线程多了,你IO读写速度还是那么多,这取决于硬件不由你线程决定.
这样就会出现一线程等待另一线程释放IO的控制权,从而不能明显提高速度
lingling_jy 2012-05-29
  • 打赏
  • 举报
回复
你可以给我再讲具体一点吗? 谢谢
绝代坏坏 2012-05-29
  • 打赏
  • 举报
回复
理论上来说多线程是否能提高程序执行效率。这取决于以下几个条件,程序是否有耗时操作,程序是否可并行工作,并行工作时发生资源等待和资源争夺的情况几率有多大。如果不能满足以上几个条件,那么使用多线程往往会增加调度成本,反而会降低程序的运行效率。至于楼上说的cpu的数量问题。应该是对多线程理解不够透彻,可以无视。
tanta 2012-05-29
  • 打赏
  • 举报
回复
如果文件较小的话,你可以先将文件读取到内存中,然后启动多线程处理,在多核的处理器上,速度应该有一定的提升。
bdmh 2012-05-29
  • 打赏
  • 举报
回复
谁告诉你线程会提高速度的,单cpu只会降低速度,只有在你cpu数量多于线程时,才会并行工作
__天涯寻梦 2012-05-29
  • 打赏
  • 举报
回复
如果 CPU 多核并且运算复杂能并行,多线程才会提高效率,如果大部分时间都是文件读取和写入,那效率就取决于磁盘I/O能力,多线程就没什么效果了。

111,126

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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