C# lock 语法糖实现原理--《.NET Core 底层入门》之自旋锁,互斥锁,混合锁,读写锁

软件发布|下载排行|最新软件

当前位置:首页IT学院IT技术

C# lock 语法糖实现原理--《.NET Core 底层入门》之自旋锁,互斥锁,混合锁,读写锁

MingsonZheng   2020-03-22 我要评论
在多线程环境中,多个线程可能会同时访问同一个资源,为了避免访问发生冲突,可以根据访问的复杂程度采取不同的措施 原子操作适用于简单的单个操作,无锁算法适用于相对简单的一连串操作,而线程锁适用于复杂的一连串操作 ### 原子操作 修改状态要么成功且状态改变,要么失败且状态不变,并且外部只能观察到修改前或者修改后的状态,修改中途的状态不能被观察到 .NET 中,System.Threading.Interlocked 类提供了用于执行原子操作的函数,这些函数接收引用参数(ref),也就是变量的内存地址,然后针对该内存地址中的值执行原子操作 ### 无锁算法 不使用线程锁,通过修改操作的内容使它们满足原子操作的条件 .NET 提供了一些线程安全的数据类型,这些数据类型大量应用了无锁算法来提升访问速度(在部分情况下仍需要线程锁): System.Collections.Consurrent.CurrentBag System.Collections.Consurrent.CurrentDictionary

Copyright 2022 版权所有 软件发布 访问手机版

声明:所有软件和文章来自软件开发商或者作者 如有异议 请与本站联系 联系我们