Если вы побаиваетесь конкурентного и многопоточного программирования, эта книга написана для вас. Стивен Клири предоставляет в ваше распоряжение 85 рецептов работы с .NET и C# 8.0. необходимых для параллельной обработки и асинхронного программирования. Конкурентность уже стала общепринятым методом разработки хорошо масштабируемых приложений, но параллельное программирование остается непростой задачей. Подробные примеры и комментарии к коду позволят разобраться в том, как современные инструменты повышают уровень абстракции и упрощают конкурентное программирование. Вы научитесь использовать async и await для асинхронных операций, расширять возможности кода за счет использования асинхронных потоков, исследовать потенциал параллельного программирования с библиотекой TPL Dataflow, создавать конвейеры потоков данных с библиотекой TPL Dataflow, задействовать функциональность System.Reactive на базе LINQ, использовать потоково-безопасные и неизменяемые коллекции, проводить модульное тестирование конкурентного кода, брать под контроль пул потоков, реализовывать корректную кооперативную отмену, анализировать сценарий на предмет объединения конкурентных методов, пользоваться всеми возможностями асинхронно-совместимого объектно-ориентированного программирования, распознавать и создавать адаптеры для кода, в котором используются старые стили асинхронного программирования.
Введение в асинхронное программирование.
Асинхронное программирование обладает двумя главными преимуществами. Первое характерно для программ с графическим интерфейсом (GUI), предназначенных для пользователя: асинхронное программирование обеспечивает быстрый отклик. Каждому из нас попадались программы, которые вдруг зависают во время работы; асинхронная программа сможет быстро реагировать па действия пользователя во время работы. Второе преимущество характерно для программ, работающих на стороне сервера: асинхронное программирование обеспечивает масштабируемость. Серверное приложение может в некоторой степени масштабироваться за счет использования пула потоков, но асинхронное серверное приложение обычно обладает на порядок лучшими возможностями масштабирования.
Оба преимущества асинхронного программирования обусловлены одним и тем же аспектом: асинхронное программирование освобождает потоки. Для GUI-программ асинхронное программирование освобождает UI-поток; это позволяет графическому приложению сохранить высокую скорость отклика на ввод пользователя. Для серверных приложений асинхронное программирование освобождает потоки запросов и позволяет серверу использовать свои потоки для обслуживания большего количества запросов.
Оглавление.
Предисловие.
Для кого написана эта книга.
Почему я написал эту книгу.
Типографские соглашения.
Структура книги.
Благодарности.
От издательства.
Глава 1. Конкурентность: общие сведения.
Знакомство с конкурентностью.
Введение в асинхронное программирование.
Введение в параллельное программирование.
Введение в реактивное программирование (Rx).
Введение в Dataflow.
Введение в многопоточное программирование.
Коллекции для конкурентных приложений.
Современная разработка.
О ключевых технологиях кратко.
Глава 2. Основы async.
2.1. Приостановка на заданный период времени.
2.2. Возвращение завершенных задач.
2.3. Передача информации о ходе выполнения операции.
2.4. Ожидание завершения группы задач.
2.5. Ожидание завершения любой задачи.
2.6. Обработка задач при завершении.
2.7. Обход контекста при продолжении.
2.8. Обработка исключений из методов async Task.
2.9. Обработка исключений из методов async void.
2.10. Создание ValueTask.
2.11. Потребление ValueTask.
Глава 3. Асинхронные потоки.
Асинхронные потоки и Task<T>.
Асинхронные потоки и IEnumerable<T>.
Асинхронные потоки и Task<IEnumerable<T>>.
Асинхронные потоки и IObservable<T>.
Итоги.
3.1. Создание асинхронных потоков.
3.2. Потребление асинхронных потоков.
3.3. Использование LINQ с асинхронными потоками.
3.4. Асинхронные потоки и отмена.
Глава 4. Основы параллельного программирования.
4.1. Параллельная обработка данных.
4.2. Параллельное агрегирование.
4.3. Параллельный вызов.
4.4. Динамический параллелизм.
4.5. Parallel LINQ.
Глава 5. Основы Dataflow.
5.1. Связывание блоков.
5.2. Распространение ошибок.
5.3. Удаление связей между блоками.
5.4. Регулирование блоков.
5.5. Параллельная обработка с блоками потока данных.
5.6. Создание собственных блоков.
Глава 6. Основы System.Reactive.
6.1. Преобразование событий.NET.
6.2. Отправка уведомлений контексту.
6.3. Группировка данных событий с использованием Window и Buffer.
6.4. Контроль потоков событий посредством регулировки и выборки.
6.5. Тайм-ауты.
Глава 7. Тестирование.
7.1. Модульное тестирование async-методов.
7.2. Асинхронные методы модульного тестирования, которые не должны проходить.
7.3. Модульное тестирование методов async void.
7.4. Модульное тестирование сетей потоков данных.
7.5. Модульное тестирование наблюдаемых объектов System.Reactive.
7.6. Модульное тестирование наблюдаемых объектов System.Reactive с использованием имитации планирования.
Глава 8. Взаимодействие.
8.1. Асинхронные обертки для «Async»-методов с «Completed»-событиями.
8.2. Асинхронные обертки для методов «Begin/End».
8.3. Асинхронные обертки для чего угодно.
8.4. Асинхронные обертки для параллельного кода.
8.5. Асинхронные обертки для наблюдаемых объектов System.Reactive.
8.6. Наблюдаемые обертки для асинхронного кода в System.Reactive.
8.7. Асинхронные потоки и сети потоков данных.
8.8. Наблюдаемые объекты System.Reactive Observables и сети потока данных.
8.9. Преобразование наблюдаемых объектов System.Reactive в асинхронные потоки.
Глава 9. Коллекции.
9.1. Неизменяемые стеки и очереди.
9.2. Неизменяемые списки.
9.3. Неизменяемые множества.
9.4. Неизменяемые словари.
9.5. Потокобезопасные словари.
9.6. Блокирующие очереди.
9.7. Блокирующие стеки и мультимножества.
9.8. Асинхронные очереди.
9.9. Регулировка очередей.
9.10. Выборка в очередях.
9.11. Асинхронные стеки и мультимножества.
9.12. Блокирующие/асинхронные очереди.
Глава 10. Отмена.
10.1. Выдача запросов на отмену.
10.2. Реагирование на запросы на отмену посредством периодического опроса.
10.3. Отмена по тайм-ауту.
10.4. Отмена async-кода.
10.5. Отмена параллельного кода.
10.6. Отмена кода System.Reactive.
10.7. Отмена сетей потоков данных.
10.8. Внедрение запросов на отмену.
10.9. Взаимодействие с другими системами отмены.
Глава 11. ООП, хорошо сочетающееся с функциональным программированием.
11.1. Асинхронные интерфейсы и наследование.
11.2. Асинхронное конструирование: фабрики.
11.3. Асинхронное конструирование: паттерн асинхронной инициализации.
11.4. Асинхронные свойства.
11.5. async-события.
11.6. Асинхронное освобождение.
Глава 12. Синхронизация.
12.1. Блокировки и команда lock.
12.2. Блокировки с async.
12.3. Блокирующие сигналы.
12.4. Асинхронные сигналы.
12.5. Регулировка.
Глава 13. Планирование.
13.1. Планирование работы в пуле потоков.
13.2. Выполнение кода с помощью планировщика задач.
13.3. Планирование параллельного кода.
13.4. Синхронизация потоков данных с помощью планировщиков.
Глава 14. Сценарии.
14.1. Инициализация совместных ресурсов.
14.2. Отложенное вычисление в System.Reactive.
14.3. Асинхронное связывание данных.
14.4. Неявное состояние.
14.5. Идентичный синхронный и асинхронный код.
14.6. «Рельсовое» программирование с сетями потоков данных.
14.7. Регулировка обновлений о ходе выполнения операции.
Приложение А. Поддержка унаследованных платформ.
Поддержка async на старых платформах.
Поддержка Dataflow на старых платформах.
Поддержка System.Reactive на старых платформах.
Приложение Б. Распознавание и интерпретация асинхронных паттернов.
Асинхронный паттерн на основе Task (TAP).
Модель асинхронного программирования (APM).
Об авторе.
Об обложке.
Купить .
По кнопкам выше и ниже «Купить бумажную книгу» и по ссылке «Купить» можно купить эту книгу с доставкой по всей России и похожие книги по самой лучшей цене в бумажном виде на сайтах официальных интернет магазинов Лабиринт, Озон, Буквоед, Читай-город, Литрес, My-shop, Book24, Books.ru.
По кнопке «Купить и скачать электронную книгу» можно купить эту книгу в электронном виде в официальном интернет магазине «ЛитРес», и потом ее скачать на сайте Литреса.
По кнопке «Найти похожие материалы на других сайтах» можно найти похожие материалы на других сайтах.
On the buttons above and below you can buy the book in official online stores Labirint, Ozon and others. Also you can search related and similar materials on other sites.
Хештеги: #учебник по программированию :: #программирование :: #Клири
Смотрите также учебники, книги и учебные материалы:
- Паттерны объектно-ориентированного проектирования, Гамма Э., Хелм Р., Джонсон Р., Влиссидес Д., 2020
- Kali Linux, Тестирование на проникновение и безопасность, Парасрам Ш., Замм А., 2020
- Объектно-ориентированный подход, Вайсфельд М., 2020
- Ловушка для багов, Полевое руководство по веб-хакингу, Яворски П., 2020
- Классические задачи Computer Science на языке Python, Копец Д., 2020
- Карьера программиста, Лакман М.Г., 2020
- Python, Искусственный интеллект, большие данные и облачные вычисления, Дейтел П., Дейтел Х., 2020
- Гид по Computer Science для каждого программиста, Спрингер В., 2020