현재 C# 응용 프로그램을 작성 중입니다. 나는 ConcurrentDictionary를 처음 사용하므로 thread의 안전성에 대해 몇 가지 질문을한다. 첫째, 이것은 내 사전입니다 :ConcurrentDictionary 사용에 관한 몇 가지 질문
/// <summary>
/// A dictionary of all the tasks scheduled
/// </summary>
private ConcurrentDictionary<string, ITask> tasks;
이 클래스를 인스턴스화하여 ITask를 구현하는 모든 객체를 추적합니다. 내 설정이 멀티 스레드 환경에서 올바르게 작동하는지 확인하고 싶습니다.
ConcurrentDictionary에서 여러 스레드가 항목 수를 가져 오려면 잠금해야합니까?
사전에서 특정 키를 가져 오려면 해당 키의 개체를 가져 와서 메서드를 호출하십시오. 잠글 필요가 있습니까? 예 :
/// <summary>
/// Runs a specific task.
/// </summary>
/// <param name="name">Task name.</param>
public void Run(string name)
{
lock (this.syncObject)
{
var task = this.tasks[name] as ITask;
if (task != null)
{
task.Execute();
}
}
}
여러 스레드가 Run 메서드를 호출하여 ITask의 Execute 메서드를 호출 할 수 있습니다. 내 목표는 모든 스레드를 안전하고 가능한 수행 할 수있게하는 것입니다.
은'.count' 속성 쓰레드 안전합니까? 또는'.Count()'메쏘드? 그 차이점은 무엇입니까? – Zapnologica