Strutturazione di programmi multi-threaded [chiuso]

1

Esistono fonti canoniche per imparare come strutturare programmi multi-thread? Anche con tutte le classi di utilità di concorrenza fornite da Java, sto avendo difficoltà a strutturare correttamente programmi multi-thread. Ogni volta che i thread sono coinvolti il mio codice diventa molto fragile, qualsiasi piccolo cambiamento può potenzialmente interrompere il programma perché il codice che salta avanti e indietro tra i thread tende a essere molto contorto.

    
posta davidk01 25.02.2011 - 05:36
fonte

6 risposte

4

Se non lo hai già fatto, ti consiglio vivamente di leggere "Concurrency Java in Practice". Anche se non risolve direttamente il tuo problema, fornirà sicuramente un utile background su Concurrency Java e sarai in grado di strutturare meglio i tuoi programmi.

link

    
risposta data 25.02.2011 - 09:14
fonte
2

Guarda le pipeline di shell GNU / Linux per suggerimenti su come strutturare un programma multi-thread.

Il concetto di pipeline di un ciclo che consente di leggere, scrivere e scrivere è dimostrato, ben compreso e facile da implementare nei thread anziché nei processi.

(Scrivevo software per radar e sonar, dove "tempo reale" significava in realtà tempo reale.)

Segui il modello di progettazione della pipeline. È come viene scritto un software valido e solido.

    
risposta data 25.02.2011 - 11:59
fonte
2

C'è un monogramma chiamato Sviluppo strutturato di programmi paralleli , di Susanna Pelagatti. Nonostante sia vecchio (1998 - e quindi fuori stampa) il modo in cui i programmi paralleli structure non sono effettivamente cambiati molto, solo gli strumenti disponibili per la pianificazione e le unità di lavoro manipolate hanno. La metodologia descritta nel libro è ancora piuttosto utile.

    
risposta data 25.02.2011 - 12:33
fonte
1

Studio framework ACE - è un ottimo modo per apprendere modelli di design e persino afferrare riutilizzabili componenti per la programmazione e comunicazione simultanee. Affronta molte aree di interesse per la programmazione con multithreading: organizzazione e comunicazione tra i thread, sincronizzazione dell'accesso ai dati e esecuzione dell'IO. E si prende anche cura dei problemi di prestazioni.

    
risposta data 25.02.2011 - 14:25
fonte
1

Suggerirei "Architettura software orientata al pattern Volume 2: pattern per oggetti concatenati e in rete".

link

    
risposta data 01.03.2011 - 10:12
fonte
0

Controlla l'erlang, lo fa abbastanza bene, ma adotta un approccio molto diverso, essendo un linguaggio funzionale con un modello nulla condiviso rimuove la necessità di blocchi (principalmente)

    
risposta data 25.02.2011 - 08:16
fonte

Leggi altre domande sui tag