Конкурентность в C#. Асинхронное, параллельное и многопоточное программирование
Большинство разработчиков настороженно относятся к конкурентному и многопоточному программированию, опасаясь проблем связанных с взаимной блокировкой, голоданием и др. Стивен Клири поможет разобраться с трудностями и избежать подводных камней, возникающих при решении реальных задач. В вашем распоряжении 85 рецептов работы с .NET и C# 8.0, необходимых для параллельной обработки и асинхронного программирования.
Конкурентность уже стала общепринятым методом разработки хорошо масштабируемых приложений, но параллельное программирование остается непростой задачей. Подробные примеры и комментарии к коду позволят разобраться в том, как современные инструменты повышают уровень абстракции и упрощают конкурентное программирование. Вы научитесь:
- использовать async и await для асинхронных операций
- расширять возможности кода за счет использования асинхронных потоков
- исследовать потенциал параллельного программирования с библиотекой TPL Dataflow
- создавать конвейеры потоков данных с библиотекой TPL Dataflow
- задействовать функциональность System.Reactive на базе LINQ
- использовать потоково-безопасные и неизменяемые коллекции
- проводить модульное тестирование конкурентного кода
- брать под контроль пул потоков
- реализовывать корректную кооперативную отмену
- анализировать сценарии на предмет объединения конкурентных методов
- пользоваться всеми возможностями асинхронно-совместимого объектно-ориентированного программирования
- распознавать и создавать адаптеры для кода, в котором используются старые стили асинхронного программирования.
Конкурентность уже стала общепринятым методом разработки хорошо масштабируемых приложений, но параллельное программирование остается непростой задачей. Подробные примеры и комментарии к коду позволят разобраться в том, как современные инструменты повышают уровень абстракции и упрощают конкурентное программирование. Вы научитесь:
- использовать async и await для асинхронных операций
- расширять возможности кода за счет использования асинхронных потоков
- исследовать потенциал параллельного программирования с библиотекой TPL Dataflow
- создавать конвейеры потоков данных с библиотекой TPL Dataflow
- задействовать функциональность System.Reactive на базе LINQ
- использовать потоково-безопасные и неизменяемые коллекции
- проводить модульное тестирование конкурентного кода
- брать под контроль пул потоков
- реализовывать корректную кооперативную отмену
- анализировать сценарии на предмет объединения конкурентных методов
- пользоваться всеми возможностями асинхронно-совместимого объектно-ориентированного программирования
- распознавать и создавать адаптеры для кода, в котором используются старые стили асинхронного программирования.
Пікірлер1
Дәйексөздер155
Есть две формы параллельного программирования: параллелизм данных и параллелизм задач
Более распространенная ситуация встречается тогда, когда требуется отменить параллельный цикл. Это не то же, что остановка цикла; цикл останавливается изнутри и отменяется за своими пределами. Например, кнопка отмены может отменить CancellationTokenSource, отменяя параллельный цикл, как в следующем примере
ValueTask, который сокращает затраты памяти, если результат в основном является синхронным; например, если результат может быть прочитан из кэша в памяти. Тип ValueTask не преобразуется в Task напрямую, но строится по схеме, допускающей ожидание, поэтому может использоваться с await
Сөреде16
1 829 кітап
808
277 кітап
760
47 кітап
205
58 кітап
60
95 кітап
31
