试了一下.Net Fx 4.0中的Parallel

         static   string [] arr  =  Directory.GetFiles(
                                          
@" C:/Users/Public/Pictures/Sample Pictures "
                                          
" *.jpg " );

        
// 这里Spin的数值最好自行modify一下,我的是Q6600的机子 
         static   void  SimulateProcessing()  { Thread.SpinWait(1000000000); }  
        
static   string  TID  get return " TID = " + Thread.CurrentThread.Mana
gedThreadId.ToString(); }
 }

        
static   void  Main( string [] args)
        
{
            
//foreach (string name in arr)
            
//{
            
//    Program.SimulateProcessing();
            
//    Console.WriteLine(name + TID);
            
//}

            Parallel.ForEach(arr, (
string name) =>
            
{
                Program.SimulateProcessing();
                Console.WriteLine(name 
+ TID);
            }
);
            Console.ReadLine();
        }

采用并行的Foreach效果的确很明显.不仅仅是指派了多个线程,对cpu的利用率也高很多,
见下面两图比较:
原来的foraech:

使用parallel的foreach:


有兴趣的朋友可以对parallel相应的类库做一下逆向工程分析一下it的原理;-)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值