¿Recolección concurrente que apoya la eliminación de un artículo específico?

Bastante simple: aparte de ConcurrentDictionary (que usaré si tengo que hacerlo pero no es realmente el concepto correcto), ¿existe alguna colección Concurrent (implementación de IProducerConsumer) que admita la eliminación de elementos específicos basados ​​en la igualdad simple de un elemento o un predicado? definiendo una condición para la eliminación?

Explicación: Tengo un algoritmo de flujo de trabajo de varias etapas y múltiples subprocesos, que extrae objetos de la base de datos y los pega en una cola de "inicio". A partir de ahí, son agarrados por la siguiente etapa, se trabajan más y se rellenan en otras colas. Este proceso continúa a través de unas cuantas etapas más. Mientras tanto, la primera etapa es invocada de nuevo por su supervisor y saca objetos de la base de datos, y pueden incluir objetos aún en proceso (porque no han terminado de procesarse y, por lo tanto, no se han vuelto a persistir con el indicador de conjunto de marcas). están terminados).

La solución que estoy diseñando es una colección maestra "en obra"; los objetos entran en esa cola cuando se recuperan para su procesamiento en la primera etapa, y se eliminan después de que se hayan vuelto a guardar en la base de datos como "procesados" en cualquier etapa del flujo de trabajo que haya completado el procesamiento necesario. Mientras el objeto esté en esa lista, se ignorará si la primera etapa lo recupera.

Había planeado usar un ConcurrentBag, pero el único método de eliminación (TryTake) elimina un elemento arbitrario de la bolsa, no uno específico (y ConcurrentBag eslento en .NET 4). ConcurrentQueue y ConcurrentStack tampoco permiten la eliminación de un elemento que no sea el siguiente que le proporcionará, dejando el ConcurrentDictionary, que funcionaría pero es más de lo que necesito (todo lo que necesito es almacenar la identificación de los registros que se procesan; no cambian durante el flujo de trabajo).

Respuestas a la pregunta(3)

Su respuesta a la pregunta