例三中我使用了 await semaphore.WaitAsync();,也就是说不存在同步阻塞代码了,全部都是异步 。
异步下遇到await,执行等待 , 那么当前执行这个Task的线程可能会被“任务调度器拿去执行别的Task”
结论:1.在异步async/await情况下,SemaphoreSlim会限制正在执行访问资源的Task的数量 , 与例二第二个结论一致 。
异步下的Lock锁鉴于SemaphoreSlim的特殊性,可以使用其通过程序角度来实现“锁”(叫乐观锁、还是悲观锁??? , 我去,两者好像都不是
文章插图
)
乐观锁与悲观锁定义如下图
文章插图
如下图代码:
重点代码 SemaphoreSlim _semaphore = new(1)
如果真要说明,我觉得是最多像 悲观锁 ,但又不全是 。这里的SemaphoreSlim只是说同一时刻只准一个线程或正在执行的Task做保存操作,那么如果是分布式程序呢,另一个程序此时也执行保存操作?
我觉得其真实原因是:使用SemaphoreSlim可以实现异步下的 Lock 锁 。
文章插图
文章插图
文章插图
【.Net SemaphoreSlim】
推荐阅读
- 迪奥720和840哪个好看_迪奥720和840试色对比
- 【ASP.NET Core】MVC控制器的各种自定义:应用程序约定的接口与模型
- “黑绷带的力量” 首先,它有一个奇怪的名字,叫“黑绷带” 其次,在看产品介绍之初,它是一款晚霜。
- 纪梵希n37和兰蔻505哪个好看?哪个值得买?
- 中 学习ASP.NET Core Blazor编程系列十——路由
- 发布 .NET 7 MAUI / MAUI Blazor 应用到 Windows 应用商店
- 花西子同心锁口红m211好看吗_花西子m211朱砂锁试色
- 如何才能画出一对好看的翅膀我没有什么画画功底的
- 天使翅膀怎么画(翅膀怎么画简单好看)
- 翅膀怎么画好看又简单(画翅膀的三种方法)