【发布时间】:2012-03-14 20:15:02
【问题描述】:
在我的代码中,我想检查一个任务(在另一个线程中)是否正在运行。
我正在考虑使用Dictionary<String, bool>,并检查布尔值。但是,由于我不知道启动时所有可能的任务,所以我必须在第一次启动任务时动态填充此字典并像这样查询它:
Boolean status;
if (_tasks.TryGetValue(lockName, out status))
{
return status;
}
return false;
由于没有这个布尔值,仅仅存在条目就可以提供信息,我正在考虑使用 Hashset<String> 并添加/删除值而不是设置标志。
return _tasks.Contains(name)
我想知道这两种方法中的哪一种会产生最好的结果。我预计写入操作的数量与读取数量大致相同。
【问题讨论】:
-
我认为 Guffa 就在这里,但如果它真的很重要,您应该考虑设置一个简单的实验并测量两者的时间 - 这应该不会太难,而且您以这种方式获得可靠的事实
-
同意,我同时也在做。但我认为这是一个很好的问题(对于 Google 搜索后代)
标签: c# performance dictionary hashset