查看: 34|回复: 0

c# 锁机制深度剖析(lockMonitor)

[复制链接]

280

主题

1

回帖

1467

积分

管理员

积分
1467
QQ
发表于 2025-10-20 21:51:06 | 显示全部楼层 |阅读模式
  1.     private static readonly  object _lock = new object();
  2.     private static int _counter = 0;
  3.     static void Main(string[] args)
  4.     {
  5.         Demo02();
  6.         Console.ReadLine();
  7.     }

  8.     static void Increment()
  9.     {
  10.        lock (_lock)
  11.         {
  12.             _counter++;
  13.         }
  14.     }


  15.     static async Task Demo02()
  16.     {
  17.         Task task1 = Task.Run(() =>
  18.         {
  19.             lock (_lock)
  20.             {
  21.                 Console.WriteLine("释放锁,等待资源锁");
  22.                 Monitor.Wait(_lock);//释放锁,等待资源锁
  23.                 Console.WriteLine("获得资源锁");
  24.             }
  25.         });

  26.         Task task2 = Task.Run(async () =>
  27.         {
  28.             await Task.Delay(1000);
  29.             lock (_lock)
  30.             {
  31.                 Console.WriteLine("释放锁资源");
  32.                 Monitor.Pulse(_lock);//释放锁资源
  33.             }
  34.         });

  35.         await Task.WhenAll(task1, task2);

  36.     }
  37.     static void Demo01()
  38.     {
  39.         Parallel.For(0, 1000, i =>
  40.         {
  41.             Increment();
  42.         });

  43.         Console.WriteLine(_counter);
  44.     }
  45. }
复制代码


高级模式
B Color Image Link Quote Code Smilies

本版积分规则

关于我们

企业文化

人才招聘

常见问题

建议反馈

合作伙伴

商务合作

新闻媒体

产品服务

客户案例

联系我们

联系电话:14776878570(同VX号)

邮箱:14776878570@163.com(同VX号)

工作时间:周一至周六(早上8点至下午10点)

关注微信公众号

QQ|Archiver|手机版|小黑屋|鸿翔机器人

GMT+8, 2025-11-6 15:28 , Processed in 0.093171 second(s), 19 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2025 Discuz! Team.