您当前的位置: 首页 >  .net

Phil Arist

暂无认证

  • 5浏览

    0关注

    267博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

C#.NET 死锁和活锁的发生及避免

Phil Arist 发布时间:2021-09-10 16:49:42 ,浏览量:5

多线程编程时,如果涉及同时读写共享数据,就要格外小心。如果共享数据是独占资源,则要对共享数据的读写进行排它访问,最简单的方式就是加锁。锁也不能随便用,否则可能会造成死锁和活锁。本文将通过示例详细讲解死锁和活锁是如何发生的,以及如何避免它们。

避免多线程同时读写共享数据

在实际开发中,难免会遇到多线程读写共享数据的需求。比如在某个业务处理时,先获取共享数据(比如是一个计数),再利用共享数据进行某些计算和业务处理,最后把共享数据修改为一个新的值。由于是多个线程同时操作,某个线程取得共享数据后,紧接着共享数据可能又被其它线程修改了,那么这个线程取得的数据就是错误的旧数据。我们来看一个具体代码示例:

static int count { get; set; }

static void Main(string[] args)
{
    for (int i = 1; i             
关注
打赏
1660722078
查看更多评论
0.0490s