我有多个队列正在被多个线程访问.为了实现线程安全,我做了以下事情:
private static Dictionary<string,Queue<string>> MyQueues = new Dictionary<string,Queue<string>>(); public static string GetNextQueueElementForKey(string key) { string res = string.Empty; if (MyQueues.Keys.Contains(key)) { Queue<string> queue = MyQueues[key]; lock (queue) { if (queue.Count() > 0) { res = queue.Dequeue(); } } } return res; }
我也可以锁定MyQueues,但是我会锁定超过必要的数量.所以我的问题是,如果锁定字典中包含的对象将起作用 – 假设一个键的值(队列)永远不会改变.