Pergunta

Com o surgimento de CPUs multicore nos desktops, as habilidades de multithreading se tornarão um recurso valioso para os programadores.Você pode recomendar alguns bons recursos (livros, tutoriais, sites, etc.) para um programador que deseja aprender sobre programação threaded?

Foi útil?

Solução

Dê uma olhada no livro de Herb Sutter "O almoço grátis acabou" e depois sua série de artigos sobre Simultaneidade Efetiva.

Outras dicas

Joseph Albahari escreveu uma boa visão geral de Threading em C# aqui:

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

Sinceramente, nunca li isso sozinho, mas Programação Simultânea em Java é um livro que ouvi recomendado por várias pessoas.

Escrevo sobre multithreading e simultaneidade em C++ em meu blog.Também estou escrevendo um livro sobre simultaneidade em C++: Simultaneidade C++ em ação.

Eu li (a maior parte) Simultaneidade Java na prática de Brian Goetz, o que é muito bom.

Obviamente, há um tema baseado em Java em execução no livro (usando implementações específicas de threads, bloqueios etc. em Java), mas praticamente todos os princípios podem ser aplicados a outras linguagens.

A página inicial do autor contém um lista de artigos ele escreveu, alguns dos quais incluem coisas relacionadas a threading.Talvez comece por aí e se você gosta do estilo dele, compre o livro.

Para obter um ótimo guia e referência para programação simultânea em C# (ou .NET em geral), recomendo o MSDN O que todo desenvolvedor deve saber sobre aplicativos multithread artigo de Vance Morrison no MSDN.Ele contém muitas informações sobre práticas recomendadas e advertências sobre o desenvolvimento multithread

Eu mantenho um linkblog para artigos, blogs e projetos simultâneos em:

http://concurrency.tumblr.com

Normalmente posto um ou dois links por dia sobre uma variedade de tópicos (threads, atores, bloqueio, programação paralela) em uma variedade de ambientes (Erlang, Java, Scala, .NET, C++, Ruby, Python, etc).

É específico do Delphi, mas não há razão para que o conceito não se aplique a qualquer outra linguagem!

Tutorial de multithreading

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

Essa é uma boa visão geral da situação. Se você estiver procurando por tutoriais e livros, talvez seja melhor especificar uma linguagem como ponto de partida para que você possa mexer em algum código.

A linguagem de programação Erlang oferece um estilo de programação simultânea fácil de usar.Talvez você nunca use Erlang, mas os conceitos são transportáveis ​​para outras linguagens.Você pode querer ler o livro Programação Erlang:Software para um mundo simultâneo .

Os fãs da programação funcional afirmam que não há necessidade de aprender nada novo.Basta usar uma linguagem funcional pura e o compilador ou interpretador irá paralelizar tudo automaticamente.Então você pode querer aprender Haskell, OCaml ou outra linguagem funcional.

Não sei exatamente o que você está procurando, mas se você estiver desenvolvendo WindowsForms, vale a pena ler cada minuto da seguinte postagem no blog:Invocações de thread de UI do WinForms:Uma revisão aprofundada de Invoke/BeginInvoke/InvokeRequred

Acho que Boost.Threads é uma ótima biblioteca de simultaneidade C++ para aprender, especialmente se você deseja apenas começar a escrever aplicativos multithread.O código é muito sucinto e fácil de entender, e o próximo padrão C++ provavelmente incluirá uma biblioteca de threading baseada em Boost.Threads (tutorial: http://www.ddj.com/cpp/184401518)

Se você quiser tentar fazer uma versão altamente paralela de uma tarefa simples, ou ver soluções reais, você poderia fazer pior do que olhar para o localizador amplo projeto.Basicamente, trata-se de como fazer a correspondência paralela de regex de arquivos de log de maneira eficiente, mas tentando adicionar o mínimo de código possível.

Os participantes enviaram soluções em vários idiomas diferentes e o resultados de desempenho são postados.O projeto original já foi concluído e agora há localizador amplo 2 assumindo o trabalho.

CodificaçãoHorror tem um bom introdução ao localizador amplo.

Para um tratamento rico e completo do assunto, com bom equilíbrio entre ciência da computação e prática, recomendo A arte da programação multiprocessador.Muitos exemplos estão em código orientado a objetos, ou seja,Java, com outras linguagens espalhadas por toda parte.Depende apenas do tema a ser abordado.O que realmente adoro neste livro é que ele discute como algoritmos comuns devem ser implementados em um design simultâneo.Claro, há muito mais!

Para conceitos gerais e tratamento de pthreads, eu gosto muito Programando com Threads POSIX.Sendo a biblioteca e API que é, está em C.

Para desenvolvedores Windows e C#, confira Blog de Joe Duffy.Joe trabalha em bibliotecas paralelas, infraestrutura e modelos de programação na Divisão de Desenvolvedores da Microsoft.Ele tem um livro chegando em novembro.2008 intitulado Programação Simultânea no Windows (Link da Amazon).

Além disso, não perca o blog do Poderoso Chefão:Herb Sutter Moinho de Sutter.Ele tem links para todos os seus artigos no Dr.Diário de Dobb e muito mais.Clique nele Categoria de simultaneidade.

Os sites dos fabricantes de CPU têm alguns conteúdos interessantes:

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

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

Além disso, a biblioteca de threading de código aberto da Intel tem algumas boas referências:

http://www.threadingbuildingblocks.org/

Se você trabalha com C#, o livro "C# 2008 and 2005 threaded programming", de Gaston C.Hillar - Publicação Packt - http://www.packtpub.com/beginners-guide-for-C-sharp-2008-and-2005-threaded-programming/book , Ajudará você.Altamente recomendado para programadores C#, pois você pode baixar o código com exemplos engraçados que exploram seu computador multicore.O livro é um bom guia com muito código para praticar.Conta histórias enquanto explica os conceitos mais difíceis.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top