Национальный цифровой ресурс Руконт - межотраслевая электронная библиотека (ЭБС) на базе технологии Контекстум (всего произведений: 638238)
Контекстум
Электро-2024

Конкурентное программирование на Scala (4000,00 руб.)

0   0
Первый авторПрокопец
ИздательствоМ.: ДМК Пресс
Страниц345
ID795051
АннотацияScala — современный, мультипарадигменный язык программирования, позволяющий описывать типичные шаблоны программирования компактнее, выразительнее и безопаснее. Scala прекрасно сочетает в себе черты объектно-ориентированных и функциональных языков. Книга начинается с введения в основы конкурентного программирования в JVM и описания модели памяти в Java, а после демонстрирует основные строительные блоки для реализации конкурентных вычислений, такие как атомарные переменные, пулы потоков и конкурентные структуры данных. Затем рассматриваются разные высокоуровневые абстракции конкуренции, каждая из которых ориентирована на решение определенного класса задач, при этом затрагиваются самые последние достижения в поддержке асинхронного программирования. Также охватываются некоторые полезные шаблоны и способы использования описываемых приемов. В заключение дается краткий обзор применения разных библиотек поддержки конкуренции и демонстрируется возможность их совместного использования. Издание предназначено разработчикам с опытом программирования на Scala, но без опыта конкурентного и асинхронного программирования.
ISBN978-5-97060-572-1
УДК004.432.42Scala
ББК32.973-018.1
Прокопец, А. Конкурентное программирование на Scala / А. Прокопец .— Москва : ДМК Пресс, 2018 .— 345 с. — ISBN 978-5-97060-572-1 .— URL: https://rucont.ru/efd/795051 (дата обращения: 08.06.2024)

Предпросмотр (выдержки из произведения)

Конкурентное_программирование_на_Scala.pdf
Стр.6
Стр.7
Стр.8
Стр.9
Стр.10
Конкурентное_программирование_на_Scala.pdf
УДК 004.432.42Scala ББК 32.973-018.1 П80 П80 Конкурентное программирование на Scala / пер. с анг. А. Н. Киселева. – М.: ДМК Пресс, 2018. – 342 с.: ил. Прокопец А. ISBN 978-5-97060-572-1 Scala – современный, мультипарадигменный язык программирования, позволяющий описывать типичные шаблоны программирования компактнее, выразительнее и безопас нее. Scala прекрасно сочетает в себе черты объектно-ориентированных и функциональных языков. Книга начинается с введения в основы конкурентного программирования в JVM и описания модели памяти в Java, а после демонстрирует основные строительные блоки для реализации конкурентных вычислений, такие как атомарные переменные, пулы потоков и конкурентные структуры данных. Затем рассматриваются разные высокоуровневые абстракции конкуренции, каждая из которых ориентирована на решение определенного класса задач, при этом затрагиваются самые последние достижения в поддержке асинхронного программирования. Также охватываются некоторые полезные шаблоны и способы использования описываемых приемов. В заключение дается краткий обзор применения разных библиотек поддержки конкуренции и демонстрируется возможность их совместного использования. Издание предназначено разработчикам с опытом программирования на Scala, но без опыта конкурентного и асинхронного программирования. УДК 004.432.42Scala ББК 32.973-018.1 Copyright © Packt Publishing 2017. First published in the English language under the title «Learning Concurrent Programming in Scala – Second Edition – (9781786466891)». Все права защищены. Любая часть этой книги не может быть воспроизведена в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. ISBN 978-1-78646-689-1 (анг.) ISBN 978-5-97060-572-1 (рус.) Copyright © 2017 Packt Publishing © Оформление, издание, перевод, ДМК Пресс, 2018
Стр.6
Содержание Предисловие .....................................................................................................................9 Об авторе ......................................................................................................................... 11 Благодарности ................................................................................................................ 12 О технических рецензентах ......................................................................................... 14 Вступление ....................................................................................................................... 17 Глава 1. Введение ........................................................................................................... 25 Конкурентное программирование .................................................................................. 25 Краткий обзор традиционных подходов к организации конкурентного выполнения .................................................................................................................. 26 Современные парадигмы конкуренции ..................................................................... 27 Преимущества языка Scala............................................................................................... 28 Начальные сведения ......................................................................................................... 29 Выполнение программ на Scala .................................................................................. 30 Основы Scala ................................................................................................................. 31 Обзор новых особенностей в Scala 2.12 .......................................................................... 35 В заключение .................................................................................................................... 36 Упражнения....................................................................................................................... 36 Глава 2. Конкуренция в JVM и модель памяти в Java ............................................. 38 Процессы и потоки ........................................................................................................... 39 Создание и запуск потоков .......................................................................................... 41 Атомарное выполнение ............................................................................................... 45 Переупорядочение ....................................................................................................... 49 Мониторы и синхронизация ............................................................................................ 51 Взаимоблокировки ....................................................................................................... 53 Защищенные блокировки ............................................................................................ 55 Прерывание потоков и корректная остановка ........................................................... 59 Изменчивые переменные ................................................................................................ 60 Модель памяти в Java ....................................................................................................... 62 Неизменяемые объекты и финальные поля ............................................................... 64 В заключение .................................................................................................................... 65 Упражнения....................................................................................................................... 66 Глава 3. Традиционные строительные блоки конкурентных программ ............. 69 Объекты Executor и ExecutionContext ............................................................................. 70 Атомарные примитивы .................................................................................................... 73 Атомарные переменные .............................................................................................. 73 Неблокирующее программирование .......................................................................... 76 Явная реализация блокировок .................................................................................... 78 Проблема ABA ............................................................................................................... 80 Ленивые значения ............................................................................................................ 82 Конкурентные коллекции ................................................................................................ 86 Конкурентные очереди ................................................................................................ 88 Конкурентные множества и словари .......................................................................... 91 Конкурентные итерации .............................................................................................. 95
Стр.7
6  Содержание Собственные конкурентные структуры данных ............................................................ 97 Реализация неблокирующего конкурентного пула ................................................... 98 Создание и обработка процессов .............................................................................. 102 В заключение .................................................................................................................. 103 Упражнения..................................................................................................................... 104 Глава 4. Асинхронное программирование с объектами Future и Promise ....... 107 Объекты Future ............................................................................................................... 108 Запуск асинхронных вычислений ............................................................................. 109 Объекты Future и обратные вызовы ......................................................................... 111 Объекты Future и исключения ................................................................................... 113 Использование типа Try ............................................................................................. 114 Фатальные исключения ............................................................................................. 115 Композиция функций в объектах Future .................................................................. 116 Объекты Promise ............................................................................................................. 123 Преобразование программных интерфейсов на основе обратных вызовов ......... 125 Расширение программного интерфейса объектов Future ....................................... 127 Отмена асинхронных вычислений ........................................................................... 128 Объекты Future и блокировка выполнения .................................................................. 130 Ожидание завершения Future ................................................................................... 130 Блокировка в асинхронных вычислениях ................................................................ 131 Библиотека Scala Async .................................................................................................. 132 Альтернативные фреймворки асинхронных вычислений .......................................... 134 В заключение ................................................................................................................. 135 Упражнения..................................................................................................................... 136 Глава 5. Параллельные коллекции данных ............................................................ 139 Краткий обзор коллекций в Scala .................................................................................. 140 Использование параллельных коллекций .................................................................... 140 Иерархия классов параллельных коллекций ............................................................ 144 Настройка уровня параллелизма .............................................................................. 146 Измерение производительности в JVM .................................................................... 146 Особенности параллельных коллекций ........................................................................ 149 Непараллелизуемые коллекции ................................................................................ 149 Непараллелизуемые операции .................................................................................. 150 Побочные эффекты в параллельных операциях ...................................................... 152 Недетерминированные параллельные операции .................................................... 153 Коммутативность и ассоциативность операторов ................................................... 154 Совместное использование параллельных и конкурентных коллекций ................... 155 Слабо согласованные итераторы ............................................................................... 156 Реализация собственных параллельных коллекций .................................................... 157 Сплиттеры ................................................................................................................... 158 Комбинаторы .............................................................................................................. 161 В заключение .................................................................................................................. 163 Упражнения..................................................................................................................... 164 Глава 6. Конкурентное программирование с Reactive Extensions ..................... 166 Создание объектов Observable ....................................................................................... 167 Объекты Observable и исключения ........................................................................... 169 Контракт наблюдаемого объекта .............................................................................. 170 Реализация собственных объектов Observable ........................................................ 172
Стр.8
Содержание  7 Создание наблюдаемых объектов из объектов Future ............................................. 173 Подписки ..................................................................................................................... 174 Объединение объектов Observable ................................................................................ 176 Вложенные наблюдаемые объекты ........................................................................... 178 Обработка ошибок в наблюдаемых объектах ........................................................... 182 Планировщики Rx ........................................................................................................... 184 Использование собственных планировщиков в приложениях с графическим интерфейсом ..................................................................................... 185 Субъекты и реактивное программирование сверху вниз ............................................ 190 В заключение .................................................................................................................. 194 Упражнения..................................................................................................................... 194 Глава 7. Программная транзакционная память ...................................................... 197 Недостатки атомарных переменных ............................................................................ 198 Использование программной транзакционной памяти ............................................. 201 Транзакционные ссылки............................................................................................ 204 Использование инструкции atomic ........................................................................... 205 Комбинирование транзакций ........................................................................................ 206 Взаимодействие транзакций и побочные эффекты ................................................ 206 Транзакции с одной операцией ................................................................................ 210 Вложенные транзакции ............................................................................................. 211 Транзакции и исключения ......................................................................................... 214 Повторение транзакций ................................................................................................. 218 Повторения с тайм-аутами ........................................................................................ 221 Транзакционные коллекции .......................................................................................... 222 Локальные переменные транзакций ........................................................................ 222 Транзакционные массивы ......................................................................................... 224 Транзакционные словари .......................................................................................... 225 В заключение .................................................................................................................. 226 Упражнения..................................................................................................................... 227 Глава 8. Акторы ............................................................................................................. 230 Работа с акторами ........................................................................................................... 231 Создание экземпляров и систем акторов ................................................................. 233 Управление необработанными сообщениями ......................................................... 236 Поведение и состояние актора .................................................................................. 237 Иерархии акторов в Akka ........................................................................................... 241 Идентификация акторов............................................................................................ 244 Жизненный цикл акторов ......................................................................................... 246 Взаимодействия между акторами ................................................................................. 249 Шаблон «запрос»......................................................................................................... 251 Шаблон «пересылка» .................................................................................................. 253 Остановка акторов ..................................................................................................... 254 Диспетчеризация акторов ............................................................................................. 255 Удаленные акторы .......................................................................................................... 260 В заключение .................................................................................................................. 263 Упражнения..................................................................................................................... 264 Глава 9. Конкуренция на практике ........................................................................... 266 Выбор правильных инструментов для решения конкретных задач ........................... 266 Объединяем все вместе – сетевой браузер файлов ...................................................... 270
Стр.9
8  Содержание Моделирование файловой системы .......................................................................... 272 Интерфейс связи с сервером ..................................................................................... 275 Программный интерфейс навигации на стороне клиента ..................................... 276 Пользовательский интерфейс на стороне клиента .................................................. 279 Реализация логики клиента....................................................................................... 282 Усовершенствование сетевого браузера файлов ..................................................... 286 Отладка конкурентных программ ................................................................................. 287 Взаимоблокировки и отсутствие прогресса ............................................................. 288 Отладка ошибочных результатов .............................................................................. 292 Отладка производительности ................................................................................... 296 В заключение .................................................................................................................. 302 Упражнения..................................................................................................................... 303 Глава 10. Реакторы ....................................................................................................... 305 Необходимость реакторов ............................................................................................. 306 Введение в фреймворк Reactors .................................................................................... 307 Программа «Hello World» ............................................................................................... 308 Потоки событий .............................................................................................................. 309 Жизненный цикл потока событий ............................................................................ 310 Комбинирование потоков событий .......................................................................... 311 Реакторы.......................................................................................................................... 313 Определение и настройка реакторов ........................................................................ 314 Использование каналов ............................................................................................. 315 Планировщики ................................................................................................................ 317 Жизненный цикл реактора ............................................................................................ 319 Службы системы реакторов ........................................................................................... 320 Служба журналирования ........................................................................................... 321 Служба времени.......................................................................................................... 321 Служба каналов .......................................................................................................... 322 Пользовательские службы ......................................................................................... 323 Протоколы ....................................................................................................................... 325 Собственная реализация протокола клиент-сервер ................................................ 325 Стандартный протокол сервер-клиент ..................................................................... 327 Протокол маршрутизации ......................................................................................... 330 Протокол двустороннего обмена .............................................................................. 331 В заключение .................................................................................................................. 334 Упражнения..................................................................................................................... 335
Стр.10

Облако ключевых слов *


* - вычисляется автоматически
Периодика по подписке
Антиплагиат система Руконтекст