thread safe concurrentbag concurrent silverlight thread-safety concurrent-collections

safe - ¿Qué clases de colección de hilos seguros están disponibles en Silverlight 4?



thread safe list c# (2)

Pruébelo: http://ch.codeplex.com/

Estoy desarrollando un marco de aplicación que será utilizado por Silverlight en el lado del cliente y .NET 4 en el lado del servidor. Internamente, el marco tiene estructuras de datos de diccionario y de cola en las que varios subprocesos accederán a las colecciones al mismo tiempo.

En el lado del servidor, me gustaría utilizar las clases ConcurrentDictionary y ConcurrentQueue disponibles en el espacio de nombres System.Collections.Concurrent . Sin embargo, estas clases no se implementan en Silverlight 4.

Los dos enfoques que estoy considerando son:

  1. Descompile las clases ConcurrentDictionary y ConcurrentQueue e impleméntelas en una biblioteca de clases de Silverlight. Estos se definirán utilizando el espacio de nombres System.Collections.Concurrent .
  2. Implementar las clases de recopilación de seguridad de subprocesos personalizadas que necesito en una biblioteca compartida (o encontrar una implementación confiable de colección de subprocesos de Silverlight) que se puedan usar tanto en el servidor como en el lado del cliente.

El primer enfoque me permitiría simplemente implementar las estructuras de datos de Silverlight que necesito, pero me preocupa la introducción de disparidades entre mi implementación de Silverlight y las clases de recopilación simultáneas implementadas en .NET 4.

El segundo enfoque proporcionaría una implementación consistente de cobro simultáneo tanto del lado del cliente como del servidor, pero parece que reinventaría la rueda.

No parece que implementar las clases ConcurrentDictionary y ConcurrentQueue en Silverlight sería muy difícil, pero ¿ya existe una biblioteca bien adoptada de clases de colección de subprocesos seguros para Silverlight?


La biblioteca de clases para Mono incluye implementaciones de las diversas colecciones concurrentes y está autorizada bajo la muy permisiva licencia de MIT.