Рекомендовать хороший ресурс для подходов к параллельному программированию?

Я читал различные фрагменты на concurrency, но надеялся найти единственный ресурс, который детализирует и сравнивает различные подходы. Идеально занимаются потоками, совместными занятиями, передачей сообщений, актерами, фьючерсами... независимо от того, что может быть новым, о котором я еще не знаю!

Предпочитал бы руководство для программистов, чем что-то откровенно теоретическое/математическое.

Спасибо.

Ответы

Ответ 1

Я рекомендую Введение в параллельное программирование от Pacheco. Это четко написано и хорошее введение в параллельное программирование.

Если вам не важно, что что-то связано с языком, Java Concurrency на практике - отличный ресурс.

Oracle онлайн-учебник является бесплатным, но, возможно, немного более кратким, чем то, что вы ищете.


Таким образом, лучший учитель для Concurrency - это, вероятно, опыт. Я бы попытался получить какую-то практику. Начните с моделирования модели "Обеденные философы" . Это классика.

Ответ 2

Сначала посмотрим, интересуетесь ли вы темой или нет. Чтобы понять общую картину concurrency, лучше всего взглянуть на книги с операционной системой, например Операционные системы, внутренние с помощью Stalings или Современные операционные системы Tanenbaum. Они могут дать вам интуицию о том, что это такое.
Там также была старая книга под названием Concurent programming by Ben-Ari. Если вы его нашли, это может быть полезно. Помимо чтения текстовых книг, хорошо сделать вашу руку грязной, написав несколько параллельных программ. Python - очень хороший выбор, если вы хотите начать использовать потоки. Каждая книга Python посвящена этой теме. Также с простым поиском в Интернете вы можете найти много ресурсов об этом, но я даю эти два более высоких предпочтения:
Многопоточное программирование (POSIX pthreads Tutorial), очень подробное введение в concurrency и многопоточность. Это в основном о C многопоточности.
Другой - Механизмы синхронизации потоков в Python.

Теперь, если вы все еще считаете, что вы заинтересованы в параллельном программировании, пора идти глубже. У вас почти есть базовые знания concurrency, теперь лучшая практика на этом уровне - начать решение проблемы и ознакомиться с шаблонами. Для достижения этой цели вы можете использовать Маленькая книга семафоров. Это одна из лучших книг в этой области, и она также бесплатна. Это книга, которая может возглавить вас, чтобы стать профессионалом. Этого должно быть достаточно, если вы хотите приблизиться к параллельному программированию, но если у вас достаточно времени, и вы готовы, хорошо взглянуть на некоторые другие парадигмы параллельного программирования, например, актеров, которые использовали в Erlang. Я говорю, что стоит прочитать несколько глав книги Семь языков за семь недель. особенно глава об Erlang и IO. На первый взгляд, это может быть трудно и странно, но хорошо ознакомиться с другими решениями для concurrency.

Ответ 3

Я бы рекомендовал "Концепции, методы и модели компьютерного программирования" от Peter Van Roy и Seif Haridi. Все основные методы программирования содержат последующие разделы по параллельному программированию. Также автор начинает с основ и определяет основные параллельные концепции программирования, их недостатки, все они сопровождаются примерами на языке программирования Oz.

Ответ 4

Если вам случается быть программистом на С# или, может быть, когда-нибудь, я настоятельно рекомендую этот учебник в серии Michal Habalcik.