ReaderWriterLockSlim.ExitWriteLock 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
减少写入模式的递归计数,如果生成的计数为 0(零),则退出写入模式。
public:
void ExitWriteLock();
public void ExitWriteLock();
member this.ExitWriteLock : unit -> unit
Public Sub ExitWriteLock ()
例外
当前线程未在写入模式下进入锁定。
示例
以下示例演示如何使用 finally 块执行 ExitWriteLock 方法,确保调用方退出写入模式。 示例中所示的方法向同步缓存添加新的键/值对。 如果键已在缓存中,则允许内部 Dictionary<TKey,TValue> 引发的异常终止该方法。 该方法 EnterWriteLock 用于在写入模式下输入锁。
此代码是为类提供的大型示例的 ReaderWriterLockSlim 一部分。
private ReaderWriterLockSlim cacheLock = new ReaderWriterLockSlim();
private Dictionary<int, string> innerCache = new Dictionary<int, string>();
Private cacheLock As New ReaderWriterLockSlim()
Private innerCache As New Dictionary(Of Integer, String)
public void Add(int key, string value)
{
cacheLock.EnterWriteLock();
try
{
innerCache.Add(key, value);
}
finally
{
cacheLock.ExitWriteLock();
}
}
Public Sub Add(ByVal key As Integer, ByVal value As String)
cacheLock.EnterWriteLock()
Try
innerCache.Add(key, value)
Finally
cacheLock.ExitWriteLock()
End Try
End Sub
注解
此方法不区分递归顺序。 例如,如果线程以可升级模式进入锁,然后在写入模式下进入锁,则线程退出这两种模式的顺序并不重要。 如果锁允许递归,线程可以在写入模式下进入锁,然后在读取模式下以递归方式输入它;线程退出读取模式和写入模式的顺序无关紧要。
退出锁可能会发出其他等待线程的信号。