Necesito crear una lista segura de subprocesos para agregar elementos a un índice lucene.Enlazar lista de seguridad (lista) en .net
¿Es seguro el siguiente subproceso?
public sealed class IndexQueue
{
static readonly IndexQueue instance = new IndexQueue();
private List<string> items = new List<string>();
private IndexQueue() { }
public static IndexQueue Instance {
get { return instance; }
}
private object padlock = new object();
public void AddItem(string item) {
lock (padlock) {
items.Add(item);
}
}
}
¿Es necesario bloquear incluso cuando se obtienen elementos de la lista interna?
La idea es que luego tendremos una tarea separada ejecutándose para tomar los elementos de indexqueue y agregarlos al índice lucene.
Gracias Ben
Existen implementaciones seguras para subprocesos en .NET 4 (si es que se puede usar incluso 4), no estoy seguro de si era consciente o no, ya que veo que está ejecutando su propio ... http: //msdn.microsoft.com /en-us/library/system.collections.concurrent.aspx –
Gracias chicos. Echaré un vistazo a System.Collections.Concurrent –
No creo que 'System.Collections.Concurrent' te sea útil. No hay un equivalente de 'Lista' e incluso si aún así usted tuviera que aplicar su propio bloqueo para hacer que la enumeración de los elementos sea atómica.Realmente depende de cómo quiera que varios subprocesos perciban la enumeración. –