c#线程同步

  介绍

这期内容当中小编将会给大家带来有关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#线程同步