.net – 属性设置器中Interlocked.Exchange的简写

.net – 属性设置器中Interlocked.Exchange的简写,第1张

概述我有一个简单的变量声明,一个由反编译器生成的类 Friend Class Project Private _Status As Integer Public Property Status As Integer Get Return Me._Status End Get Set(ByVal value As I 我有一个简单的变量声明,一个由反编译器生成的类

FrIEnd Class Project    Private _Status As Integer    Public Property Status As Integer        Get            Return Me._Status        End Get        Set(ByVal value As Integer)            Interlocked.Exchange(Me._Status,value)        End Set    End PropertyEnd Class

这个声明是否有任何简写形式.
实际上,这是在类内部使用的backgrounDWorker,并由另一个类在外部访问.

要明白速记的含义是什么.我举个例子:
以下gode是速记

SyncLock lock    z = 1End SyncLock

以下详细代码

Dim obj As Object = Me.lockObjectFlowControl.CheckForSyncLockOnValueType(obj)Dim flag As Boolean = FalseTry    Monitor.Enter(obj,flag)    Me.z = 1Finally    If (flag) Then        Monitor.[Exit](obj)    End IfEnd Try
解决方法 正如Holterman所提到的,Interlocked.Exchange提供的唯一好处是内存障碍. (Int32赋值在.NET中始终是原子的,并且您将丢弃返回值.)

如果源代码是用C#编写的,那么它最初可能包含volatile关键字,这也会产生内存屏障.

private volatile int _Status;public int Status{    get { return _Status; }    set { _Status = value; }}

但是,这应该导致在getter中生成内存屏障.

总结

以上是内存溢出为你收集整理的.net – 属性设置器中Interlocked.Exchange的简写全部内容,希望文章能够帮你解决.net – 属性设置器中Interlocked.Exchange的简写所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1229435.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-06
下一篇 2022-06-06

发表评论

登录后才能评论

评论列表(0条)

保存