这期内容当中小编将会给大家带来有关c#线程同步,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。
同步是一种只允许一个线程在特定时间访问某些资源的技术。没有其他线程可以中断,直到所分配的线程或当前访问线程访问数据完成其任务。
在多线程程序中,允许线程访问任何资源所需的执行时间。线程共享资源并异步执行。访问共享资源(数据)是有时可能会暂停系统的关键任务,所以可以通过线程同步来处理它。
主要场景如:存款,取款等交易业务处理。
<强>线程同步的优点强>
- <李>一致性维护李> <>李无线程干扰李>
<强> c#锁定强>
使用c# <代码> 代码>锁关键字同步执行程序。它用于为当前线程锁定,执行任务,然后释放锁定。它确保其他线程在执行完成之前不会中断执行。
下面,创建两个非同步和同步的例子。
<强> c#示例:非同步强>
在这个例子中,我们不使用锁。此示例异步执行。换句话说,线程之间存在上下文切换。
使用系统; 使用System.Threading; 类打印机 { 公共空间PrintTable () { for (int i=1;我& lt;=5;我+ +) { 线程t=Thread.CurrentThread; thread . sleep (200); Console.WriteLine (t.Name +“;“+ i); } } } 类项目 { 公共静态void Main (string [] args) { 打印机p=新打印机(); 线程t1=新线程(新ThreadStart (p.PrintTable)); 线程t2=新线程(新ThreadStart (p.PrintTable)); t1。Name=跋叱?:“; t2。Name=跋叱?:“; t1.Start (); t2.Start (); } }
执行上面示例代码,可以看到以下输出结果——
线程2:1
引用>
线程1:1
2号线程:线程2
1: 2线程2:
3
线程1:3
线程2:4
线程1:4
线程2:5
线程1:5<强> c#线程同步示例强>
在这个例子中,我们使用<代码> 代码>块锁,因此示例同步执行。换句话说,线程之间没有上下文切换。在输出部分,可以看到第二个线程在第一个线程完成任务之后开始执行。
使用系统; 使用System.Threading; 类打印机 { 公共空间PrintTable () { 锁(这) { for (int i=1;我& lt;=5;我+ +) { 线程t=Thread.CurrentThread; thread . sleep (100); Console.WriteLine (t。名称+“;“;+ i); } } } } 类项目 { 公共静态void Main (string [] args) { 打印机p=新打印机(); 线程t1=新线程(新ThreadStart (p.PrintTable)); 线程t2=新线程(新ThreadStart (p.PrintTable)); t1。Name=跋叱?:“; t2。Name=跋叱?:“; t1.Start (); t2.Start (); } }执行上面示例代码,可以看到以下输出结果——
线程1:1
引用>
线程1:2线程1:
3
线程1:4
线程1:5
2号线程:线程1
2: 2线程2:
3
线程2:4
线程2:5上述就是小编为大家分享的c#线程同步了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注行业资讯频道。
c#线程同步