Какие есть хорошие ресурсы для изучения многопоточного программирования?[закрыто]
-
08-06-2019 - |
Вопрос
С появлением многоядерных процессоров на настольных компьютерах навыки многопоточности станут ценным активом для программистов.Можете ли вы порекомендовать какие-нибудь хорошие ресурсы (книги, учебные пособия, веб-сайты и т. д.) программисту, который хочет научиться многопоточному программированию?
Решение
Взгляните на книгу Херба Саттера.Бесплатный обед окончен", а затем его серия статей о Эффективный параллелизм.
Другие советы
Джозеф Альбахари написал хороший обзор Threading в C# здесь:
Честно говоря, сам никогда не читал, но Параллельное программирование на Java это книга, которую, как я слышал, рекомендовали несколько человек.
Я пишу о многопоточности и параллелизме в C++ на мой блог.Я также пишу книгу о параллелизме на C++: Параллелизм C++ в действии.
Я прочитал (большую часть) Java-параллелизм на практике Брайан Гетц, и это очень хорошо.
Очевидно, что в книге присутствует тема, основанная на Java (с использованием специфических для Java реализаций потоков, блокировок и т. д.), но практически все принципы могут быть применены и к другим языкам.
На домашней странице автора есть список статей он написал, некоторые из которых включают в себя материалы, связанные с многопоточностью.Может быть, начать с этого, и если вам нравится его стиль, купите книгу.
В качестве отличного руководства и справочника по параллельному программированию на C# (или .NET в целом) я бы порекомендовал MSDN. Что должен знать каждый разработчик о многопоточных приложениях статья Вэнса Моррисона на MSDN.Он содержит большое количество информации о передовом опыте и предостережениях относительно многопоточной разработки.
Я веду блог со статьями, блогами и проектами, посвященными параллелизму, по адресу:
Обычно я публикую одну-две ссылки в день на различные темы (потоки, актеры, блокировки, параллельное программирование) в различных средах (Erlang, Java, Scala, .NET, C++, Ruby, Python и т. д.).
Это специфично для Delphi, но нет причин, по которым эта концепция не применима к любому другому языку!
http://www.cilk.com/multicore-e-book/
Это хороший общий обзор ситуации. Если вы ищете учебные пособия и книги, возможно, лучше всего указать язык в качестве отправной точки, чтобы вы могли возиться с некоторым кодом.
Язык программирования Erlang обеспечивает простой в использовании стиль параллельного программирования.Возможно, вы никогда не будете использовать Erlang, но его концепции можно перенести на другие языки.Возможно, вы захотите прочитать книгу Программирование на Эрланге:Программное обеспечение для параллельного мира .
Любители функционального программирования утверждают, что здесь нет необходимости изучать что-то новое.Просто используйте чистый функциональный язык, и компилятор или интерпретатор автоматически все распараллелит.Поэтому вы можете изучить Haskell, OCaml или другой функциональный язык.
Я не знаю, что именно вы ищете, но если вы занимаетесь разработкой WindowsForms, следующий пост в блоге стоит прочитать каждую минуту:Вызывает поток пользовательского интерфейса WinForms:Углубленный обзор Invoke/BeginInvoke/InvokeRequred
Я думаю, что Boost.Threads — отличная библиотека C++ для параллельного выполнения, особенно если вы просто хотите начать писать многопоточные приложения.Код очень краток и прост для понимания, плюс следующий стандарт C++, вероятно, будет включать библиотеку потоков, основанную на Boost.Threads (руководство: http://www.ddj.com/cpp/184401518)
Если вы хотите попробовать выполнить высокопараллельную версию простой задачи или увидеть реальные решения, вы можете сделать хуже, чем посмотреть на широкий искатель проект.По сути, речь идет о том, как эффективно выполнять параллельное сопоставление регулярных выражений файлов журналов, но стараясь добавлять как можно меньше кода.
Участники представили решения на разных языках, и результаты производительности размещены.Первоначальный проект уже завершен, и теперь существует широкий искатель 2 беремся за работу.
КодированиеУжасы имеет хороший введение в широкий искатель.
Для насыщенного и тщательного изучения предмета с хорошим балансом между информатикой и практикой я рекомендую Искусство многопроцессорного программирования.Многие примеры приведены в объектно-ориентированном коде, т.е.Java, а также другие языки, разбросанные повсюду.Это зависит только от обсуждаемой темы.Что мне действительно нравится в этой книге, так это то, что в ней обсуждается, как общие алгоритмы следует реализовывать в параллельном проекте.Конечно, это гораздо больше!
Что касается общих концепций и обработки pthreads, мне очень нравится Программирование с использованием потоков POSIX.Будучи библиотекой и API, она написана на C.
Для разработчиков Windows и C# см. Блог Джо Даффи.Джо работает над параллельными библиотеками, инфраструктурой и моделями программирования в отделе разработчиков Microsoft.У него есть книга, которая выйдет в ноябре.2008 г. под названием Параллельное программирование в Windows (ссылка на амазон).
Также не пропустите блог Крестного отца:Херб Саттер Саттерс Милл.У него есть ссылки на все его статьи в Dr.Журнал Добба и многое другое.Нажмите на него Категория параллелизма.
На сайтах производителей процессоров есть интересный контент:
http://developer.amd.com/documentation/articles/Pages/default.aspx#parallel
http://software.intel.com/en-us/multi-core
Также есть несколько хороших ссылок на библиотеку потоков Intel с открытым исходным кодом:
Если вы работаете с C#, книга Гастона С. «Поточное программирование на C# 2008 и 2005».Хиллар - Packt Publishing - http://www.packtpub.com/beginners-guide-for-C-sharp-2008-and-2005-threaded-programming/book , Вам поможет.Настоятельно рекомендуется программистам на C#, поскольку вы можете скачать код с забавными примерами использования вашего многоядерного компьютера.Книга представляет собой хорошее руководство с большим количеством кода для практики.Он рассказывает истории и объясняет самые сложные понятия.