Eu tenho lido sobre simultaneidade, multi-threading e como "o almoço grátis acabou" . Mas ainda não tive a possibilidade de usar o MT no meu trabalho.
Portanto, estou procurando sugestões sobre o que eu poderia fazer para obter alguma prática de MT pesado da CPU por meio de exercícios ou participação em alguns projetos de código aberto.
Obrigado.
Editar: estou mais interessado em projetos de código aberto que usam o MT para tarefas associadas à CPU ou simplesmente algoritmos interessantes para implementar usando o MT, em vez de livros ou documentos que descrevem apenas as ferramentas, como threads, mutexes e bloqueios, ou como o MT pode ser usado para ter GUIs responsivas ...
learning
multithreading
Xavier Nodet
fonte
fonte
Respostas:
O artigo de Joseph Albahari sobre Threading em C # é um dos melhores recursos que já vi.
O índice está abaixo. Observe que alguns dos tópicos, como a Biblioteca Paralela de Tarefas, são específicos do .NET, mas grande parte é aplicável a outras linguagens, especialmente Java.
Você também pode dar uma olhada no tutorial de Jon Skeet aqui: http://www.yoda.arachsys.com/csharp/threads/
fonte
O Java Concurrency in Practice é um dos melhores livros sobre multiencadeamento e simultaneidade. Embora todos os exemplos do livro sejam baseados em Java, este livro fornece uma explicação sólida do mundo do MT. Isso me ajudou muito quando eu estava desenvolvendo um sistema de MT.
fonte
O capítulo 11 do livro Intel Threading Building Blocks, de James Reinders, é dedicado a exemplos de algoritmos e projetos que fazem uso da Computação Paralela (ou Programação Paralela): um localizador de substring, o Jogo da Vida, uma Peneira de Eratóstenes, Matrix Multiply e outros tópicos mais avançados, como filtragem de pacotes de rede e jogos.
fonte
Achei a programação simultânea no Windows de Joe Duffy muito útil. Há muita profundidade. Ele não dá nenhum soco, então você realmente tem uma idéia de quantas maneiras existem para dar um tiro no próprio pé. Isso me ajudou a ser cauteloso, que é o melhor conselho que posso dar a qualquer pessoa que comece com aplicativos MT.
fonte
Há uma diferença entre simultaneidade e paralelismo. A simultaneidade é o ato de fazer mais de uma coisa por vez, como gravar em 2 arquivos. Paralelismo é o ato de acelerar programas usando vários núcleos.
Embora não haja almoço grátis no que diz respeito à simultaneidade, no paralelismo o almoço certamente está se tornando mais gratuito, veja desenvolvimentos como http://www.haskell.org/haskellwiki/GHC/Data_Parallel_Haskell
fonte
Este site tem alguns bons exemplos de projetos em geral. www.planet-source-code.com
Basta escolher um idioma e procurar multi-threading. você deve ver vários projetos com o código-fonte disponível.
fonte