Domanda

Con l'avvento delle CPU multicore sui desktop, le competenze di multithreading diventeranno una risorsa preziosa per i programmatori.Potete consigliare alcune buone risorse (libri, tutorial, siti Web, ecc.) per un programmatore che desidera conoscere la programmazione threaded?

È stato utile?

Soluzione

Dai un'occhiata a Herb Sutter "Il pranzo gratis è finito" e poi la sua serie di articoli su Concorrenza effettiva.

Altri suggerimenti

Joseph Albahari ha scritto una buona panoramica del threading in C# qui:

http://www.albahari.com/threading/

Onestamente non l'ho mai letto personalmente, ma Programmazione concorrente in Java è un libro che ho sentito consigliare da diverse persone.

Scrivo di multithreading e concorrenza in C++ su il mio blog.Sto anche scrivendo un libro sulla concorrenza in C++: Concorrenza C++ in azione.

Ho letto (la maggior parte) Concorrenza Java in pratica di Brian Goetz, il che è molto buono.

Ovviamente c'è un tema basato su Java che attraversa il libro (usando implementazioni specifiche di Java di thread, lock, ecc.), ma praticamente tutti i principi possono essere applicati ad altri linguaggi.

La home page dell'autore contiene a elenco degli articoli ha scritto, alcuni dei quali includono materiale relativo al threading.Magari inizia da lì e se ti piace il suo stile, acquista il libro.

Per un'ottima guida e riferimento per la programmazione della concorrenza in C# (o .NET in generale), consiglierei MSDN Ciò che ogni sviluppatore deve sapere sulle app multithread articolo di Vance Morrison su MSDN.Contiene una grande quantità di informazioni sulle migliori pratiche e avvertenze sullo sviluppo multithread

Mantengo un linkblog per articoli, blog e progetti sulla concorrenza all'indirizzo:

http://concurrency.tumblr.com

Di solito pubblico uno o due collegamenti al giorno su una varietà di argomenti (thread, attori, lock, programmazione parallela) in una varietà di ambienti (Erlang, Java, Scala, .NET, C++, Ruby, Python, ecc.).

È specifico per Delphi, ma non c'è motivo per cui il concetto non si applichi a nessun altro linguaggio!

Tutorial multi-thread

http://www.cilk.com/multicore-e-book/

Questa è una bella panoramica generale della situazione, se stai cercando tutorial e libri potrebbe essere meglio specificare una lingua come punto di partenza in modo da poter scherzare con un po' di codice.

Il linguaggio di programmazione Erlang fornisce uno stile di programmazione simultanea facile da usare.Potresti non usare mai l'Erlang, ma i concetti sono trasportabili in altre lingue.Potresti voler leggere il libro Erlang di programmazione:Software per un mondo simultaneo .

Gli appassionati della programmazione funzionale sostengono che non è necessario imparare nulla di nuovo.Basta usare un linguaggio funzionale puro e il compilatore o l'interprete parallelizzerà automaticamente tutto.Quindi potresti voler imparare Haskell, OCaml o un altro linguaggio funzionale.

Non so cosa stai cercando esattamente, ma se stai sviluppando WindowsForms, vale la pena leggere ogni minuto il seguente post sul blog:Invocazioni del thread dell'interfaccia utente di WinForms:Una revisione approfondita di Invoke/BeginInvoke/InvokeRequred

Penso che Boost.Threads sia un'ottima libreria di concorrenza C++ da imparare, soprattutto se vuoi solo iniziare a scrivere applicazioni multithread.Il codice è molto conciso e facile da capire, inoltre il prossimo standard C++ includerà probabilmente una libreria di threading basata su Boost.Threads (tutorial: http://www.ddj.com/cpp/184401518)

Se vuoi provare a eseguire una versione altamente parallela di un compito semplice o vedere soluzioni reali, potresti fare peggio che guardare il cercatore ampio progetto.Fondamentalmente si tratta di come eseguire in modo efficiente la corrispondenza regex parallela dei file di registro, ma cercando di aggiungere il minor codice possibile.

I partecipanti hanno presentato soluzioni in molte lingue diverse e il risultati prestazionali vengono pubblicati.Il progetto originale è ormai terminato e ora c'è mirino ampio 2 assumendo il lavoro.

CodingHorror ha un bene introduzione al mirino ampio.

Per una trattazione ricca e approfondita dell'argomento, con un buon equilibrio tra informatica e pratica, lo consiglio L'arte della programmazione multiprocessore.Molti esempi sono in codice orientato agli oggetti, ad es.Java, con altri linguaggi sparsi ovunque.Dipende solo dall'argomento trattato.Ciò che mi piace davvero di questo libro è che discute come implementare algoritmi comuni in una progettazione simultanea.Naturalmente c'è molto di più!

Per i concetti generali e la trattazione dei thread, mi piace molto Programmazione con thread POSIX.Essendo la libreria e l'API che è, è in C.

Per gli sviluppatori Windows e C#, dai un'occhiata Il blog di Joe Duffy.Joe lavora su librerie parallele, infrastrutture e modelli di programmazione nella divisione sviluppatori di Microsoft.Ha un libro in arrivo a novembre.2008 intitolato Programmazione simultanea su Windows (Collegamento ad Amazon).

Inoltre, non perdetevi il blog del Padrino:Quello di Herb Sutter Mulino di Sutter.Ha collegamenti a tutti i suoi articoli in Dr.Diario di Dobb e altro ancora.Fare clic su suo Categoria di concorrenza.

I siti web dei produttori di CPU hanno alcuni contenuti interessanti:

http://developer.amd.com/documentation/articles/Pages/default.aspx#parallel

http://software.intel.com/en-us/multi-core

Anche la libreria di threading open source di Intel ha alcuni buoni riferimenti:

http://www.threadingbuildingblocks.org/

Se lavori con C#, il libro "C# 2008 and 2005 threaded programming", di Gaston C.Hillar - Packt Publishing - http://www.packtpub.com/beginners-guide-for-C-sharp-2008-and-2005-threaded-programming/book , ti aiuterò.Altamente raccomandato per i programmatori C#, perché puoi scaricare il codice con esempi divertenti che sfruttano il tuo computer multicore.Il libro è una bella guida con molto codice su cui esercitarsi.Racconta storie mentre spiega i concetti più difficili.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top