it-swarm.it

Come praticheresti la concorrenza e il multi-threading?

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

Sto quindi cercando suggerimenti su cosa potrei fare per fare un po 'di pratica con la CPU pesante MT attraverso esercizi o partecipazione ad alcuni progetti open source.

Grazie.

Modifica: sono più interessato ai progetti open source che usano MT per attività legate alla CPU, o semplicemente algoritmi che sono interessanti da implementare usando MT, piuttosto che libri o documenti che descrivono solo il strumenti come thread, mutex e blocchi o come MT può essere usato per avere GUI reattive ...

33
Xavier Nodet

Il capitolo 11 del libro Intel Threading Building Blocks di James Reinders è dedicato ad esempi di algoritmi e progetti che fanno uso di Parallel Computing (o Programmazione parallela): un sottostringa Finder, il Game of Life, un setaccio di Eratostene, Matrix Moltiplica e poi altri argomenti più avanzati come il filtraggio dei pacchetti di rete e i giochi.

8
Xavier Nodet

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

Il sommario è di seguito. Si noti che alcuni degli argomenti, come la Libreria parallela attività, sono specifici di .NET, ma gran parte di esso è applicabile ad altre lingue, in particolare 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: http://www.yoda.arachsys.com/csharp/threads/

15
Robert Harvey

Java Concurrency in Practice è uno dei migliori libri sul multi-threading e sulla concorrenza. Sebbene tutti gli esempi nel libro siano basati su Java, questo libro fornisce una solida spiegazione di MT. Mi ha aiutato molto quando stavo sviluppando un MT sistema.

13
Sorantis

Ho trovato Programmazione concorrente su Windows di Joe Duffy per essere molto utile. C'è molta profondità. Non ti dà alcun pugno, quindi hai davvero una buona sensazione di quanti modi ci sono per spararti al piede. Mi ha aiutato a essere cauto, che è il miglior consiglio che posso dare a chiunque a partire da MT app.

4
Scott Whitlock

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 utilizzando più core.

Anche se non c'è pranzo libero quando si tratta di concorrenza, in parallelo il pranzo sta sicuramente diventando più gratuito, vedi sviluppi come http://www.haskell.org/haskellwiki/GHC/Data_Parallel_Haskell

2
dan_waterworth

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

Basta scegliere una lingua e cercare il multi-threading. dovresti vedere un numero di progetti con codice sorgente disponibile.

1
Pemdas