.NET多线程编程(11)——c#线程基础的原子操作

简介:
 使用.Threading.Interlocked类可以提高线程安全性,一般情况下在子线程内使用i这样方式访问全局变量方式是不安全做法测试下面代码在test1中经过100次number,number并没有每次从0变为100而test2则没有问题
using;  
using.Windows.Forms;  
WindowsApplication32  
{  
  publicpartialForm1:Form  
  {  
    publicForm1  
    {  
      InitializeComponent;  
    }  
    number=0;  
    ///<summary>  
    ///普通变量访问方式  
    ///</summary>  
    privatevoidtest1  
    {  
      for(m=0;m<10;m)  
      {  
        number;  
        .Threading.Thread.Sleep(100);  
      }  
      Console.WriteLine(number);  
    }  
    privatevoidbutton1_Click(objectsender,EventArgse)  
    {  
      number=0;  
      for(i=0;i<10;i)  
      {  
        .Threading.Thread(test1).Start;  
      }  
    }  
    ///<summary>  
    ///使用原子访问方式  
    ///</summary>  
    privatevoidtest2  
    {  
      for(m=0;m<10;m)  
      {  
        .Threading.Interlocked.Increment(refnumber);  
        .Threading.Thread.Sleep(100);  
      }  
      Console.WriteLine(number);  
    }  
    privatevoidbutton2_Click(objectsender,EventArgse)  
    {  
      number=0;  
      for(i=0;i<10;i)  
      {  
        .Threading.Thread(test2).Start;  
      }  
    }  
  }  
}




本文转自 qianshao 51CTO博客,原文链接:http://blog.51cto.com/qianshao/203210,如需转载请自行联系原作者

目录
相关文章
|
18天前
|
SQL 开发框架 安全
C#编程与多线程处理
【4月更文挑战第21天】探索C#多线程处理,提升程序性能与响应性。了解C#中的Thread、Task类及Async/Await关键字,掌握线程同步与安全,实践并发计算、网络服务及UI优化。跟随未来发展趋势,利用C#打造高效应用。
|
2月前
|
Java 调度 C#
C#学习系列相关之多线程(一)----常用多线程方法总结
C#学习系列相关之多线程(一)----常用多线程方法总结
|
2月前
|
安全 编译器 C#
C#学习相关系列之多线程---lock线程锁的用法
C#学习相关系列之多线程---lock线程锁的用法
|
2月前
|
C#
C#学习相关系列之多线程---ConfigureAwait的用法
C#学习相关系列之多线程---ConfigureAwait的用法
|
2月前
|
C#
C#学习相关系列之多线程---TaskCompletionSource用法(八)
C#学习相关系列之多线程---TaskCompletionSource用法(八)
|
2月前
|
Java C#
C#学习系列相关之多线程(五)----线程池ThreadPool用法
C#学习系列相关之多线程(五)----线程池ThreadPool用法
|
2月前
|
并行计算 安全 Java
C# .NET面试系列四:多线程
<h2>多线程 #### 1. 根据线程安全的相关知识,分析以下代码,当调用 test 方法时 i > 10 时是否会引起死锁? 并简要说明理由。 ```c# public void test(int i) { lock(this) { if (i > 10) { i--; test(i); } } } ``` 在给定的代码中,不会发生死锁。死锁通常是由于两个或多个线程互相等待对方释放锁而无法继续执行的情况。在这个代码中,只有一个线程持有锁,且没有其他线程参与,因此不
111 3
|
4月前
|
设计模式 消息中间件 安全
多线程编程设计模式(单例,阻塞队列,定时器,线程池)(二)
多线程编程设计模式(单例,阻塞队列,定时器,线程池)(二)
35 1
|
1天前
|
安全 Java C#
C#多线程详解
C#多线程详解
8 0
|
2月前
|
C#
C#学习系列相关之多线程(二)----Thread类介绍
C#学习系列相关之多线程(二)----Thread类介绍