我面试失败了,因为我不知道这个

我因为不知道这个而失败了一次面试。所以我写这篇文章,确保这种情况不会再发生在你身上。

锁定允许我们控制有多少线程可以访问代码中的某个部分。

为什么要这样做呢?

因为你想保护对昂贵资源的访问。而且你需要锁定提供的并发控制。由于我很少使用低级代码,所以我尝试使用lock语句来实现这一点。结果一切都变得一团糟。

lock语句在异步代码中不起作用。这是有道理的,因为你无法保证哪个线程会完成你的异步方法。那么解决方案是什么呢?

你需要使用一个可以异步工作的同步原语。

在C#中有很多选择,而SemaphoreSlim是一个很好的选择。

你可以设置最大计数值(允许进入的线程数)来获得所需的并发级别。

两个重要的注意事项:

在等待信号量时使用超时

  • 确保在try-finally中释放锁
  • 现在你已经准备好在实际工作中使用锁定了。

在你离开之前,给你一个有趣的问题。你会如何在分布式系统中实现锁定?

SemaphoreSlim文档

转载:https://twitter.com/mjovanovictech/status/1694594265928650988

© 版权声明
THE END
喜欢就支持一下吧
点赞0

Warning: mysqli_query(): (HY000/3): Error writing file '/tmp/MYHimpJN' (Errcode: 28 - No space left on device) in /www/wwwroot/583.cn/wp-includes/class-wpdb.php on line 2345
admin的头像-五八三
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

图形验证码
取消
昵称代码图片