长vs {0L} [0]

时间:2018-01-10 17:39:31

标签: c# multithreading interlocked

在我们的一项旧服务中,我发现了这样一段代码(评论是原创的):

long[] tasksCounter = {0};  //boxing for long counters
long[] errorsCounter = {0}; //boxing for long counters

此外,在代码中这些"数组"与Interlocked类一起使用:Interlocked.Increment(ref errorsCounter[0])Interlocked.Read(ref errorsCounter[0])等。

我想知道作者为什么不使用basicaly long tasksCounter, errorsCounter

这种方法可能有我不了解的好处吗?

可能值得一提的是变量用于异步lambda。当我将其更改为基本long时,Resharper插件会警告我"访问修改后的封闭"并建议将其包装在数组中。我发现了几个关于它的问题:

Access to Modified Closure

ReSharper Warning - Access to Modified Closure

0 个答案:

没有答案