directory
Version:
v0.0.0-...-5edb3c8
Opens a new window with list of versions in this module.
Published: Aug 6, 2023
License: GPL-3.0
Opens a new window with license information.
README
¶
Введение
Часть 1: Понятие многопоточности
- Объяснение понятия многопоточности и параллелизма.
- Разъяснение разницы между выполнением операций параллельно и конкурентно.
- Примеры ситуаций, где использование многопоточности может улучшить производительность программы.
Часть 2: Основные понятия: горутины и планировщик
- Представление о горутинах как основных строительных блоках многопоточности в Go.
- Объяснение работы планировщика горутин и его роли в контроле выполнения программы.
- Преимущества использования горутин вместо традиционных потоков.
Часть 3: Создание горутин с помощью ключевого слова go
- Демонстрация создания горутин с использованием ключевого слова go.
- Пояснение, как горутины работают параллельно, и как они могут улучшить отзывчивость программы.
Часть 4: Контроль выполнения программы с помощью sync.WaitGroup
- Использование sync.WaitGroup для ожидания завершения горутин перед завершением программы.
- Практические примеры с sync.WaitGroup.
Часть 5: Понимание конкурентности и порядка выполнения горутин
- Объяснение понятия конкурентности и порядка выполнения горутин.
- Как горутины могут быть запущены в разном порядке и влиять на результат выполнения программы.
Часть 6: Каналы как механизм обмена данными
- Введение в каналы и их роль в обмене данными между горутинами.
- Объяснение преимуществ использования каналов для синхронизации работы горутин.
Часть 7: Основные операции с каналами: отправка и получение данных
- Практические примеры отправки и получения данных через каналы.
- Обработка ситуаций с блокировкой при чтении или записи на каналах.
Часть 8: Проблемы конкурентного доступа к данным
- Объяснение проблем, возникающих при параллельном доступе к общим данным.
- Приведение примеров с гонками данных (race conditions) и некорректной работой программы.
Часть 9: Мьютексы для синхронизации доступа к общим данным
- Введение в мьютексы и их использование для предотвращения гонок данных.
- Демонстрация работы мьютексов на практических примерах.
Часть 10: Атомарные операции и атомарные типы данных
- Объяснение атомарных операций и атомарных типов данных для обеспечения безопасного доступа к общим данным из разных горутин.
- Использование атомарных операций для уменьшения затрат на синхронизацию.
Часть 11: Паттерн "Пул горутин" для ограничения количества одновременно выполняющихся горутин
- Введение в паттерн "Пул горутин" и его использование для ограничения числа активных горутин и контроля нагрузки на систему.
Часть 12: Использование context для управления временем выполнения горутин
- Представление об использовании пакета context для отмены или ограничения времени выполнения горутин.
- Практические примеры работы с context.
Заключение
- Подведение итогов и повторение основных понятий многопоточности в Go.
- Предоставление ресурсов для дальнейшего изучения темы.
- Ответы на вопросы студентов.
Directories
¶
Click to show internal directories.
Click to hide internal directories.