浅析c# 线程同步_第1页
浅析c# 线程同步_第2页
浅析c# 线程同步_第3页
浅析c# 线程同步_第4页
浅析c# 线程同步_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第浅析c#线程同步同步是一种只允许一个线程在特定时间访问某些资源的技术。没有其他线程可以中断,直到所分配的线程或当前访问线程访问数据完成其任务。

在多线程程序中,允许线程访问任何资源所需的执行时间。线程共享资源并异步执行。访问共享资源(数据)是有时可能会暂停系统的关键任务。所以可以通过线程同步来处理它。

主要场景如:存款,取款等交易业务处理。

线程同步的优点

一致性维护

无线程干扰

C#锁定

使用C#lock关键字同步执行程序。它用于为当前线程锁定,执行任务,然后释放锁定。它确保其他线程在执行完成之前不会中断执行。

下面,创建两个非同步和同步的例子。

C#示例:非同步

在这个例子中,我们不使用锁。此示例异步执行。换句话说,线程之间存在上下文切换。

usingSystem;

usingSystem.Threading;

classPrinter

publicvoidPrintTable()

for(inti=1;ii++)

Threadt=Thread.CurrentThread;

Thread.Sleep(200);

Console.WriteLine(t.Name+""+i);

classProgram

publicstaticvoidMain(string[]args)

Printerp=newPrinter();

Threadt1=newThread(newThreadStart(p.PrintTable));

Threadt2=newThread(newThreadStart(p.PrintTable));

t1.Name="Thread1:";

t2.Name="Thread2:";

t1.Start();

t2.Start();

执行上面示例代码,可以看到以下输出结果-

Thread2:1

Thread1:1

Thread2:2

Thread1:2

Thread2:3

Thread1:3

Thread2:4

Thread1:4

Thread2:5

Thread1:5

C#线程同步示例

在这个例子中,我们使用lock块,因此示例同步执行。换句话说,线程之间没有上下文切换。在输出部分,可以看到第二个线程在第一个线程完成任务之后开始执行。

usingSystem;

usingSystem.Threading;

classPrinter

publicvoidPrintTable()

lock(this)

for(inti=1;ii++)

Threadt=Thread.CurrentThread;

Thread.Sleep(100);

Console.WriteLine(t.Name+""+i);

classProgram

publicstaticvoidMain(string[]args)

Printerp=newPrinter();

Threadt1=newThread(newThreadStart(p.PrintTable));

Threadt2=newThread(newThreadStart(p.PrintTable));

t1.Name="Thread1:";

t2.Name="Thread2:";

t1.Start();

t2.Start();

执行上面示例代码,可以看到以下输出结果-

Thread1:1

Thread1:2

Thread1:3

Thread1:4

Thread1:5

Thread2:1

Thread2:2

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论