Come praticherai la concorrenza e il multi-threading? [chiuso]

31

Ho letto di concorrenza, multi-threading e come "il pranzo gratis è finito" . Ma non ho ancora avuto la possibilità di usare MT nel mio lavoro.

Sono quindi alla ricerca di suggerimenti su cosa potrei fare per ottenere un po 'di pratica della CPU pesante MT attraverso esercizi o partecipazione ad alcuni progetti open-source.

Grazie.

Modifica: sono più interessato a progetti open source che usano MT per compiti legati alla CPU, o semplicemente algoritmi che sono interessanti da implementare usando MT, piuttosto che libri o documenti che descrivono solo gli strumenti come thread, mutex e blocchi, o come MT può essere utilizzato per avere GUI reattivi ...

    
posta Xavier Nodet 31.12.2010 - 00:24
fonte

6 risposte

8

Il capitolo 11 del libro Intel Threading Building Blocks di James Reinders è dedicato ad esempi di algoritmi e progetti che fai uso di Parallel Computing (o Parallel Programming): una sottostringa finder, il Game of Life, un Sieve di Eratostene, Matrix Multiply e quindi altri argomenti più avanzati come il filtraggio dei pacchetti di rete e i giochi.

    
risposta data 03.01.2011 - 17:17
fonte
15

L'articolo di Joseph Albahari su Threading in C # è una delle migliori risorse che ho visto.

Il sommario è sotto. Nota che alcuni degli argomenti, come la Task Parallel Library, sono specifici di .NET, ma molti di essi sono applicabili ad altre lingue, specialmente Java.

GETTING STARTED
Introduction and Concepts
Join and Sleep
How Threading Works
Threads vs Processes
Threading’s Uses and Misuses
Creating and Starting Threads
Passing Data to a Thread
Naming Threads
Foreground vs Background
Thread Priority
Exception Handling
Thread Pooling
Thread Pooling via TPL
Thread Pooling Without TPL
Optimizing the Thread Pool
BASIC SYNCHRONIZATION
+ Synchronization Essentials
+ Locking
+ Thread Safety
+ Event Wait Handles
+ Synchronization Contexts
USING THREADS
+ Event-Based Asynch Pattern
+ BackgroundWorker
+ Interrupt and Abort
+ Safe Cancellation
+ Lazy Initialization
+ Thread-Local Storage
+ Timers
ADVANCED THREADING
+ Nonblocking Synchronization
+ Signaling with Wait and Pulse
+ The Barrier Class
+ Reader/Writer Locks
+ Suspend and Resume
+ Aborting Threads
PARALLEL PROGRAMMING
+ Parallel Programming
+ Why PFX?
+ PLINQ
+ The Parallel Class
+ Task Parallelism
+ Working with AggregateException
+ Concurrent Collections
+ SpinLock and SpinWait

Puoi anche dare un'occhiata al tutorial di Jon Skeet qui: link

    
risposta data 31.12.2010 - 01:23
fonte
13

Java Concurrency in Practice è uno dei migliori libri su multi-threading e simultaneità. Sebbene tutti gli esempi del libro siano basati su Java, questo libro fornisce una solida spiegazione del mondo MT. Mi ha aiutato molto quando stavo sviluppando un sistema M-T.

    
risposta data 31.12.2010 - 02:03
fonte
4

Ho trovato Concurrent Programming on Windows di Joe Duffy essere molto utile. C'è molta profondità. Non tira pugni, quindi ottieni davvero una buona sensazione per quanti modi ci sono per spararti ai piedi. Mi ha aiutato a essere cauto, il miglior consiglio che posso dare a chiunque inizi con le app di MT.

    
risposta data 31.12.2010 - 05:03
fonte
2

C'è una differenza tra concorrenza e parallelismo. La concorrenza è l'atto di fare più di una cosa alla volta, come scrivere su 2 file. Il parallelismo è l'atto di accelerare i programmi usando più core.

Sebbene non ci sia un pranzo gratis quando si parla di concorrenza, parallelamente il pranzo sta sicuramente diventando più libero, vedi sviluppi come link

    
risposta data 31.12.2010 - 11:31
fonte
1

Questo sito ha alcuni buoni esempi di progetti in generale. www.planet-source-code.com

Scegli una lingua e cerca il multi-threading. dovresti vedere un numero di progetti con il codice sorgente disponibile.

    
risposta data 31.12.2010 - 01:17
fonte

Leggi altre domande sui tag