我想从sql中释放我的应用程序,因为我没有大型数据库.我想把我的数据保存在内存中,所以我的应用程序运行得更快.
我的问题是我有一个密钥池,只有4个客户端可以使用密钥,我想在每个密钥注册到客户端时将其锁定,所以我将使用:
lock(key)
{
assignKeyToClient(clientId);
}
Run Code Online (Sandbox Code Playgroud)
如果我使用它,会锁定使用密钥的副本还是锁定ram上的原始"密钥"并在完成分配后释放它?
谢谢!
我认为您对该lock语句的含义感到困惑- 它仅用于并发管理 - 它确保它所保护的代码部分("关键部分")一次只能由一个线程输入.
这与用户数据无关,即客户端ID或密钥.要管理唯一的客户端ID,您可以使用类似的东西Dictionary.当您指定密钥时,只有在执行此部分代码的多个线程时才应使用锁.如果是这种情况,请使用私有只读对象变量来锁定类实例,以确保只分配一次相同的键:
private readonly object myLock = new object();
private Dictionary<int> assignedKeys = new Dictionary<int>();
...
lock(myLock)
{
int key = PickAKeyHere();
AssignKeyToClient(key, clientId);
assignedKeys[key] = clientId; //keep track of which client is assigned what key
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1650 次 |
| 最近记录: |