Actualmente estoy escribiendo una aplicación C#. Soy nuevo en el uso de ConcurrentDictionary así que tengo algunas preguntas sobre la seguridad de su hilo. En primer lugar, este es mi diccionario:algunas preguntas sobre el uso de ConcurrentDictionary
/// <summary>
/// A dictionary of all the tasks scheduled
/// </summary>
private ConcurrentDictionary<string, ITask> tasks;
que ejecutar este en mi clase y utilizarlo para realizar un seguimiento de todos mis objetos que implementan ITask. Quiero asegurarme de que mi configuración funcione correctamente en un entorno de múltiples hilos.
Si varios subprocesos desean obtener el recuento de la cantidad de elementos en el ConcurrentDictionary, ¿debo bloquearlo?
Si quiero obtener una clave en particular del diccionario, obtengo el objeto de esa clave y llamo un método, ¿debo bloquearla? por ejemplo:
/// <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();
}
}
}
Guardando la mente, múltiples hilos podrían llamar al método Run buscando llamar al método Execute de ITask. Mi objetivo es que todo sea seguro y lo más eficiente posible.
es el hilo de la propiedad '.count' seguro? o el método '.Count()'? ¿Cuál es la diferencia? – Zapnologica