Я читал о параллелизме, многопоточности и о том, как «бесплатный обед закончился» . Но у меня еще не было возможности использовать МТ в своей работе.
Таким образом, я ищу предложения о том, что я мог бы сделать, чтобы получить некоторую практику CPU MT с помощью упражнений или участия в некоторых проектах с открытым кодом.
Спасибо.
Редактировать: меня больше интересуют проекты с открытым исходным кодом, которые используют MT для задач, связанных с процессором, или просто алгоритмы, которые интересно реализовать с использованием MT, а не книги или статьи, которые описывают только инструменты, такие как потоки, мьютексы и блокировки, или как можно использовать MT для создания адаптивных графических интерфейсов ...
learning
multithreading
Ксавье Ноде
источник
источник
Ответы:
Статья Джозефа Албахари о Threading в C # - один из лучших ресурсов, которые я видел.
Содержание ниже. Обратите внимание, что некоторые темы, такие как Task Parallel Library, специфичны для .NET, но многие из них применимы к другим языкам, особенно Java.
Вы также можете взглянуть на учебник Джона Скита здесь: http://www.yoda.arachsys.com/csharp/threads/
источник
Java Concurrency in Practice - одна из лучших книг о многопоточности и параллелизме. Хотя все примеры в книге основаны на Java, эта книга дает четкое объяснение мира МТ. Это очень помогло мне, когда я разрабатывал систему MT.
источник
Глава 11 книги Intel Threading Building Blocks Джеймса Рейндерса посвящена примерам алгоритмов и проектов, в которых используются параллельные вычисления (или параллельное программирование): искатель подстрок, Игра жизни, Сито Эратосфена, Матричное умножение и затем другие более сложные темы, такие как фильтрация сетевых пакетов и игры.
источник
Я нашел параллельное программирование на Windows Джо Даффи очень полезным. Там много глубины. Это не дает никаких ударов, так что вы действительно почувствуете, как много способов выстрелить себе в ногу. Это помогло мне быть осторожным, и это лучший совет, который я могу дать всем, кто начинает работать с приложениями MT.
источник
Есть разница между параллелизмом и параллелизмом. Параллелизм - это процесс выполнения более чем одной операции одновременно, например, запись в 2 файла. Параллелизм - это процесс ускорения программ за счет использования нескольких ядер.
Хотя бесплатного параллельного обеда не существует, в параллелизме обед, безусловно, становится более бесплатным, см. Такие события, как http://www.haskell.org/haskellwiki/GHC/Data_Parallel_Haskell
источник
Этот сайт имеет несколько хороших примеров проектов в целом. www.planet-source-code.com
Просто выберите язык и ищите многопоточность. Вы должны увидеть несколько проектов с исходным кодом.
источник