我有多个线程将数据写入公共源,并且我希望两个线程相互阻塞,当且仅当它们触及相同的数据时.
有办法专门锁定任意键会很好:
string id = GetNextId();
AquireLock(id);
try
{
DoDangerousThing();
}
finally
{
ReleaseLock(id);
}
Run Code Online (Sandbox Code Playgroud)
如果没有其他人试图锁定相同的密钥,我希望他们能够同时运行.
我可以使用一个简单的互斥体字典来实现这一点,但是我需要担心驱逐旧的,未使用的锁,如果集合变得太大,这可能会成为一个问题.
是否存在此类锁定模式的现有实现.