Exceto por uma postagem de blog aqui e ali, descrevendo os atributos personalizados que alguém criou, mas que não parece ter nenhuma tração - como uma descrevendo como impor a imutabilidade , outra sobre Documentando a segurança de threads , modelando os atributos após as anotações do JCIP - existe algum padrão emergente? Alguma coisa que a MS esteja planejando para o futuro?
Isso é algo que deve ser padrão, se houver alguma chance de interoperabilidade entre bibliotecas em termos de simultaneidade. Tanto para fins de documentação quanto para alimentar ferramentas de teste estáticas / dinâmicas.
Se a MS não está fazendo nada nessa direção, isso pode ser feito no CodePlex - mas também não consegui encontrar nada.
<opinion> A simultaneidade e a segurança do encadeamento são realmente difíceis em linguagens imperativas e de objetos, como C # e Java, devemos tentar domar, até que esperamos mudar para linguagens mais apropriadas. </opinion>
Respostas:
O problema tanto da imutabilidade quanto da segurança do encadeamento é que eles não são conceitos em preto e branco, mas há várias garantias possíveis a esse respeito. Reduzir isso para atributos simples pode ser difícil. IMO um simples
ThreadSafe
eImmutable
atributo não é suficiente. Ainda elaborar um conjunto de atributos capturando pelo menos a semântica mais importante parece promissor para mim.Por exemplo, pegue um
AddRange
método. Pode ser thread-safe o suficiente para nunca corromper o estado da coleção subjacente, mas pode não ser atômico. Uma implementação comum com essas propriedades pode ser apenas chamar umAdd
método atômico para cada elemento.No lado da imutabilidade, também temos aspectos diferentes:
Uma anotação é que este contexto já existe:
Pure
para métodos livres de efeitos colaterais.fonte
Não acho que exista um conjunto de padrões (até quase) no momento. Projetos isolados fazem isso à sua maneira. Em um post de tópico, eles falam sobre imutabilidade por meio de contratos de código e até mesmo inseridos diretamente no sistema de tipos. Já vi menos sobre segurança de threads.
fonte