multithreading/

directory
v0.0.0-...-5edb3c8 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 6, 2023 License: GPL-3.0

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

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL