Abgesehen von einem Blog-Beitrag, der hier und da die benutzerdefinierten Attribute beschreibt, die jemand erstellt hat, die jedoch keine Anziehungskraft zu haben scheinen - wie einer, der beschreibt, wie Unveränderlichkeit erzwungen wird , ein anderer , der die Sicherheit von Threads dokumentiert und die Attribute nach JCIP-Annotationen modelliert - Gibt es einen Standard, der auftaucht? Was könnte MS für die Zukunft planen?
Dies sollte Standard sein, wenn die Möglichkeit einer Interoperabilität zwischen Bibliotheken in Bezug auf die Parallelität besteht. Sowohl zu Dokumentationszwecken als auch zum Zuführen statischer / dynamischer Testwerkzeuge.
Wenn MS nichts in diese Richtung tut, könnte dies auf CodePlex geschehen - aber ich konnte dort auch nichts finden.
<opinion> Parallelität und Thread-Sicherheit sind in Imperativ- und Objektsprachen wie C # und Java sehr schwierig. Wir sollten versuchen, sie zu zähmen, bis wir hoffentlich zu geeigneteren Sprachen wechseln. </ Meinung>
Antworten:
Das Problem sowohl bei der Unveränderlichkeit als auch bei der Gewindesicherheit besteht darin, dass es sich nicht um Schwarz-Weiß-Konzepte handelt, es gibt jedoch eine Reihe möglicher Garantien in dieser Hinsicht. Es könnte schwierig sein, dies auf einfache Attribute zu reduzieren. IMO ein einfaches
ThreadSafe
undImmutable
Attribut ist nicht genug. Es klingt für mich vielversprechend, immer noch eine Reihe von Attributen auszuarbeiten, die zumindest die wichtigsten Semantiken erfassen.Nehmen Sie zum Beispiel eine
AddRange
Methode. Es ist möglicherweise threadsicher genug, um den Status der zugrunde liegenden Sammlung niemals zu beschädigen, aber möglicherweise nicht atomar. Eine übliche Implementierung mit diesen Eigenschaften besteht möglicherweise darin,Add
für jedes Element eine atomare Methode aufzurufen .Auf der Seite der Unveränderlichkeit haben wir auch verschiedene Aspekte:
Eine Anmerkung ist, dass dieser Kontext bereits existiert:
Pure
für nebenwirkungsfreie Methoden.quelle
Ich glaube nicht, dass es derzeit eine Reihe von Standards gibt (auch nicht quasi). Isolierte Projekte tun dies teilweise auf ihre eigene Weise. In einem Thread-Beitrag geht es um Unveränderlichkeit über Codeverträge und sogar um das direkte Backen in das Typensystem. Ich habe noch weniger über Thread-Sicherheit gesehen.
quelle