日期:2014-05-17  浏览次数:20803 次

C# 中线程使用的一个疑问,求助!
一个程序,功能是将一个文本里的内容按照指定的方式转译(比如1A,转译就是AA,1B就是BB这种)写入另一个文本,一共有10中转译方法。

做法一:单线程操作,将10个转译方案写成一个方法进行调用,然后写入文本。

做法二:10线程操作,将10个转译方案写成10个转译方法,通过10个线程操作,然后再写入文本。

做法三:将10个转译方案写成一个方法,用10个线程进行写入。

哪一个会提升速度??我现在刚写完做法一的,耗时大概5分钟的样子。

------解决方案--------------------
创建比你CPU个数更多的线程数毫无意义。
------解决方案--------------------
我觉得瓶颈在写文件。 写文件的速度依赖于硬件,因此多线程写多个文件不一定能提升速度。

lz可以看一下讨论的这个回答:
Why does threading increase time (reduce performance) in this example?
http://stackoverflow.com/a/17546862

我同意Matteo Italia说的,一个线程写文件,另一个线程做其它计算,会提示比较明显。
多线程写多个文件需要实地测试。
------解决方案--------------------
一个线程转译
一个线程 写文件
------解决方案--------------------
文件较大时,读文件就采用异步,通过FileStream有重载指定Option
写线程采用单独的线程
读内容到选定正确的方案也要尽量优化(如果方案的解析时间慢于异步读的时间才需要去开线程,像你上面说的那样简单的可以不用)