C#   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了c# – ReaderWriterLockSlim是正确的选择吗?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在为在 Windows Azure中运行的应用程序编写全局错误处理程序/记录器.当应用程序中发生错误时,将执行需要以原子方式执行的许多操作.我需要防止在上一个错误完成之前记录错误.同时,我希望根据需要读取日志.

我最初的想法是使用Monitor / lock并仅锁定错误写入.这样就完全没有抑制读取.我想知道ReaderWriterLockSlim是否更合适.我不能说我真正理解一种方法与另一种方法间的价值.

我应该创建一个ReaderWriterLockSlim并执行以下操作(将读取包装在EnterReadLock中)…

public static void LogError(Exception exception)
{
    _lock.EnterWriteLock();

    ...

    _lock.ExitWriteLock();
}

或者我只是执行以下操作,只锁定写入部分:

public static void LogError(Exception exception)
{
     lock (someStaticLock)
     {
        ...
     }
}

任何想法/建议将不胜感激.

@H_801_21@解决方法
好吧,这完全取决于预期资源争用的方式.以下是我根据锁定内容和锁定量做出的简单决定.

ReaderWriterLockSlim是使用自旋锁实现的,因此如果你有很长的锁定资源(在这种情况下写文本),由于等待线程的旋转会导致性能更差.也就是说,它是以下情况下非常有用的工具.

>如果你有很多锁,并且每个锁都是更细粒度的(锁定非常小的代码片段),那么ReaderWriterLockSlim或(spinlock).
>预期的线程或争用的数量是高螺旋锁是有意义的,只要锁定是细粒度的.

锁定或监视器最适合您的争用是粗粒度并且您知道争用或锁定数量较少.

ReaderWriterLockSlim至少比ReaderWriterLock快3-5倍.

大佬总结

以上是大佬教程为你收集整理的c# – ReaderWriterLockSlim是正确的选择吗?全部内容,希望文章能够帮你解决c# – ReaderWriterLockSlim是正确的选择吗?所遇到的程序开发问题。

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

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。