Esiste un insieme quasi standard di attributi per annotare sicurezza dei thread, immutabilità ecc.?

8

Tranne un post del blog qua e là, che descrive gli attributi personalizzati creati da qualcuno, ma che non sembrano avere alcuna trazione - come uno che descrive come enforce immutability , un altro su Documentazione della sicurezza dei thread , modellazione degli attributi dopo annotazioni JCIP - ci sono degli standard emergenti ? Qualcosa che la SM potrebbe avere in programma per il futuro?

Questo è qualcosa che dovrebbe essere standard, se ci deve essere qualche possibilità di interoperabilità tra le librerie in termini di concorrenza. Sia a scopo di documentazione, sia per alimentare strumenti di test statici / dinamici.

Se MS non sta facendo nulla in quella direzione, potrebbe essere fatto su CodePlex - ma non sono riuscito a trovare nulla neanche lì.

< opinion > La concorrenza e la sicurezza dei thread sono davvero difficili in linguaggi imperativi e degli oggetti come C # e Java, dovremmo provare a domarlo, fino a quando speriamo di passare a lingue più appropriate. < / opinion >

    
posta Eugene Beresovsky 15.07.2011 - 06:56
fonte

2 risposte

3

Il problema sia dell'immutabilità che della sicurezza del thread sono che non sono concetti in bianco e nero, ma ci sono un certo numero di possibili garanzie a tale riguardo. Ridurlo a attributi semplici potrebbe essere difficile. IMO un semplice attributo ThreadSafe e Immutable non è sufficiente. Sto ancora elaborando una serie di attributi che catturano almeno i suoni semantici più importanti che mi promettono.

Ad esempio, prendi un metodo AddRange . Potrebbe essere abbastanza thread sicuro da non danneggiare mai lo stato della collezione sottostante, ma potrebbe non essere atomico. Un'implementazione comune con queste proprietà potrebbe essere solo chiamando un metodo atomico Add per ogni elemento.

Sul lato dell'immutabilità abbiamo anche diversi aspetti:

  • Offrire solo accessor in sola lettura o davvero mai in evoluzione
  • Profondità dell'immutabilità, vale a dire anche gli oggetti secondari sono immutabili
  • Immutabilità fisica vs. logica. Ad esempio, l'inizializzazione pigra non modifica lo stato visibile, ma modifica lo stato interno.

Un'annotazione è già presente in questo contesto: Pure per i metodi senza effetti collaterali.

    
risposta data 17.08.2011 - 20:08
fonte
0

Non penso che ci sia un insieme di standard (anche quasi) in questo momento. I progetti isolati fanno parte di questo a modo loro. I post thread na parlano di immutabilità tramite codice contratti e persino cottura direttamente nel sistema di tipo. Ho visto ancora meno sulla sicurezza dei thread.

    
risposta data 17.08.2011 - 19:34
fonte

Leggi altre domande sui tag