gpt4 book ai didi

c# - ReaderWriterLockSlim 是否有等效的 lock{} 语句?

转载 作者:太空狗 更新时间:2023-10-29 17:42:36 27 4
gpt4 key购买 nike

我喜欢 C# 中的快捷方式 lock(myLock){/* do stuff */>。是否有等效的读/写锁? (特别是 ReaderWriterLockSlim。)现在,我使用以下自定义方法,我认为它可行,但有点烦人,因为我必须将我的操作作为匿名函数传递,如果可能,我更愿意使用标准锁定机制.

    void bool DoWithWriteLock(ReaderWriterLockSlim RWLock, int TimeOut, Action Fn)
{
bool holdingLock = false;
try
{
if (RWLock.TryEnterWriteLock(TimeOut))
{
holdingLock = true;
Fn();
}
}
finally
{
if (holdingLock)
{
RWLock.ExitWriteLock();
}
}
return holdingLock;
}

最佳答案

您不能覆盖 lock 关键字的行为。一种常见的技术是劫持 using 关键字。

  1. 使 DoWithWriteLock 返回一个 IDisposable
  2. TryEnterWriteLock 调用保留在 DoWithWriteLock 方法中
  3. 返回一个实现IDisposable 的对象。在该对象的 Dispose 方法中,调用 ExitWriteLock

最终结果:

// Before
DoWithWriteLock(rwLock,
delegate
{
Do1();
Do2()
} );

// After
using (DoWithWriteLock(rwLock))
{
Do1();
Do2();
}

关于c# - ReaderWriterLockSlim 是否有等效的 lock{} 语句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4369540/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com