spinLock用法

         我们初识多线程或者多任务时,第一个想到的同步方法就是使用lock或者Monitor,然而在4.0 之后微软给我们提供了另一把利器——spinLock,它比重量级别的Monitor具有更小的性能开销,它的用法跟Monitor很相似;

         下面我们来写一个例子看一下,代码如下(关于lock和Monitor的用法就不再细说了,网上资料很多,大家可以看看):

 1  SpinLock slock = new SpinLock(false);
 2             long sum1 = 0;
 3             long sum2 = 0;
 4             Parallel.For(0, 100000, i =>
 5             {
 6                 sum1 += i;
 7             });
 8 
 9             Parallel.For(0, 100000, i =>
10             {
11                 bool lockTaken = false;
12                 try
13                 {
14                     slock.Enter(ref lockTaken);
15                     sum2 += i;
16                 }
17                 finally
18                 {
19                     if (lockTaken)
20                         slock.Exit(false);
21                 }
22             });
23 
24             Console.WriteLine("Num1的值为:{0}", sum1);
25             Console.WriteLine("Num2的值为:{0}", sum2);
26 
27             Console.Read();
View Code

 

转载于:https://www.cnblogs.com/D-LuFei/p/9075444.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值