Excepto por una publicación de blog aquí y allá, que describe los atributos personalizados que alguien creó, pero que no parecen obtener ninguna tracción, como una que describe cómo imponer la inmutabilidad , otra sobre Documenting Thread Safety , que modela los atributos después de las anotaciones de JCIP . ¿Algún estándar emergente? ¿Algo que MS pueda estar planeando para el futuro?
Esto es algo que debería ser estándar, si hay alguna posibilidad de interoperabilidad entre bibliotecas de manera concurrente. Tanto para fines de documentación como para alimentar herramientas de prueba estáticas / dinámicas.
Si MS no está haciendo nada en esa dirección, podría hacerlo en CodePlex, pero tampoco pude encontrar nada allí.
<opinion> La concurrencia y la seguridad de los subprocesos son realmente difíciles en los lenguajes imperativos y de objetos como C # y Java, deberíamos tratar de domarlo, hasta que con suerte cambiemos a lenguajes más apropiados. </opinion>
Respuestas:
El problema con la inmutabilidad y la seguridad del hilo es que no son conceptos en blanco y negro, pero hay una serie de posibles garantías al respecto. Reducir eso a atributos simples puede ser difícil. OMI un simple
ThreadSafe
yImmutable
atributo no es suficiente. Aún trabajando en un conjunto de atributos que capturen al menos la semántica más importante me suena prometedor.Por ejemplo, tome un
AddRange
método. Puede ser lo suficientemente seguro como para nunca corromper el estado de la colección subyacente, pero puede no ser atómico. Una implementación común con estas propiedades podría ser simplemente llamar a unAdd
método atómico para cada elemento.En el lado de la inmutabilidad también tenemos diferentes aspectos:
Una anotación es que este contexto ya existe:
Pure
para los métodos libres de efectos secundarios.fuente
No creo que haya un conjunto de estándares (incluso cuasi) en este momento. Los proyectos aislados hacen algo de esto a su manera. En una publicación de hilo , hablan sobre la inmutabilidad a través de contratos de código e incluso se cuecen directamente en el sistema de tipos. He visto incluso menos sobre la seguridad de los hilos.
fuente