• 线程 同步 以3人买车票为例。


    线程同步  示范1

     代码如下:

     运行结果如下:

    从运行结果可以看出,两个线程同步访问共享资源,没有考虑同步的问题,结果不正确。

    所以需要线程同步。 

    所谓同步:是指在某一时刻只有一个线程可以访问变量。
    如果不能确保对变量的访问是同步的,就会产生错误。

    c#为同步访问变量提供了一个非常简单的方式,即使用c#语言的关键字Lock,它可以把一段代码定义为互斥段,

    在同一时间内:只有一个线程可以访问互斥段的代码,其他线程需要进行等待。

    Lock(expression)
    {
       statement_block
    }

    expression代表你希望上锁的对象:
               如果你想保护一个类的实例,一般地,你可以使用this;
               如果你想保护一个静态变量(如互斥代码段在一个静态方法内部),一般使用类名就可以了

    线程同步示例 2:

    本次例子  是三人去 买车票的例子:

     

    运行结果如下:

    线程同步,在同一时间段只有一个线程能够访问 同一个方法(互斥代码段), 就避免了:车票已经卖完,乘客还允许买到车票的问题。

  • 相关阅读:
    COGS 2104. [NOIP2015]神奇的幻方
    洛谷 P1387 最大正方形
    包和一些常用的模块
    模块
    模块的导入和使用
    函数迭代器与生成器
    函数的小知识
    函数的闭包和装饰器
    函数的进阶
    初识函数
  • 原文地址:https://www.cnblogs.com/bingyizhihun/p/8242762.html
Copyright © 2020-2023  润新知