Параллельное программирование. Проблемы многопоточных приложений. Примитивы синхронизации потоков презентация
Содержание
- 2. План лекции Проблемы многопоточных приложений Введение Задачи читателей и писателей Задачи спящего парикмахера Не DeadLock Доступ
- 3. Простое различие Последовательная программа - программа, которая выполняет логическую операцию и когда она заканчивается, выполняет следующую
- 4. Реализация параллельных вычислений Многопоточная Многопроцессная Распределенная
- 5. Parallelism vs Concurrency
- 6. Parallelism vs Concurrency Сходства Более быстрое выполнение по сравнению с одной очередью Последовательное выполнение в рамках
- 7. Parallelism vs Concurrency Отличия В случае Concurrency необходима очередь первый получает любой подарок В случае Parallelism
- 8. Parallelism vs Concurrency Лабораторная работа №1 Concurrency ? Parallelism?
- 9. Проблемы Shared resources DeadLocks ABA problem
- 10. Проблемы и примеры SharedResources Банковский счет (неверная запись переменной) Слишком много молока (одновременное выполнение действия) Проблема
- 11. Проблемы и примеры SharedResources
- 12. Гонки потоков. Банковский счет.
- 13. Гонки потоков. Терминал оператора.
- 14. Гонки потоков. Одновременное снятие.
- 15. Гонки потоков. Длительные операции.
- 16. Гонки потоков. Длительные операции. Нужна блокировка двойного выполнения. Варианты?
- 17. Гонки потоков. Длительные операции.
- 18. Критическая секция Участок исполняемого кода программы, в котором производится доступ к общему ресурсу (данным или устройству),
- 19. Гонки потоков. Одновременное снятие. Эксклюзивный доступ Код снятия со счета Решена ли проблема?
- 20. Гонки потоков. Двойное списание.
- 21. Гонки потоков. Невозможность снятия.
- 22. Гонки потоков. Невозможность снятия.
- 23. Гонки потоков. Подвисание интерфейса.
- 24. Гонки потоков. Подвисание интерфейса.
- 25. Гонки потоков. Трансфер денег.
- 26. SharedResources. Безопасная запись. Доступ к ресурсу не изменяет ресурс – например операция чтения; Изменение данных является
- 27. Проблемы и примеры DeadLocks
- 28. Гонки потоков. Взаимная блокировка.
- 29. DeadLock
- 30. DeadLock
- 31. Проблема обедающих философов. Пять философов Перед каждым тарелка спагетти. Между парой философов вилка. Либо есть двумя
- 32. Проблема обедающих философов. Нужен алгоритм действия философов. Варианты?
- 33. Еще проблемы Livelock – потоки работают, но ничего не делают, потому как не могут захватить все
- 34. DeadLocks Соблюдать последовательность входа и выхода в критические секции Использовать библиотечные классы (std, boost) Обрабатывать исключения
- 35. Примитивы синхронизации потоков. Простые блокирующие методы Блокирующие конструкции Сигналы Неблокирующие конструкции
- 36. Примитивы синхронизации потоков. Простые блокирующие методы
- 37. Простые блокирующие методы Wait Sleep Join
- 38. Простые блокирующие методы Ожидание может завершиться по следующим причинам: Выполнилось условие ожидания Закончилось время ожидания Поток
- 39. Простые блокирующие методы. Условие ожидания Минусы: Нагрузка на процессор Простои
- 40. Простые блокирующие методы. Таймаут WaitForSingleObject(.. INFINITE) WaitForMultipleObjects(.. INFINITE)
- 41. Примитивы синхронизации потоков. Блокирующие конструкции
- 42. Блокирующие конструкции Семафор — объект, ограничивающий количество потоков, которые могут войти в заданный участок кода. Мьютекс
- 43. С++ Критическая секция Назначение: предоставление доступа ОДНОМУ потоку Скорость: высокая Область видимости: процесс Пример: CRITICAL_SECTION cs;
- 44. С++ Мьютекс Именованная критическая секция, доступная для использования в рамках операционной системы. Назначение: предоставление доступа ОДНОМУ
- 45. С++ Семафор Назначение: предоставление доступа НЕСКОЛЬКИМ потокам Скорость: медленнее Область видимости: ОС Пример: HANDLE hSemaphore; hSemaphore
- 46. Примитивы синхронизации потоков. Сигналы
- 47. С++ Событие HANDLE hEvent; hEvent = CreateEvent(NULL, false (autoreset event), false, NULL); WaitForSingleObject(hEvent, INFINITE); // ??
- 48. Список литературы Википедия Введение https://habrahabr.ru/company/piter/blog/274569 Проблемы параллельного программирования https://ru.wikipedia.org/wiki/Проблема_спящего_парикмахера https://ru.wikipedia.org/wiki/Проблема_обедающих_философов Threading in C# http://www.albahari.com/threading Best practices
- 49. Введение в параллельное программирование “To put it quite bluntly: as long as there were no machines,
- 50. Знаменитый закон Мура I Закон Мура (1965): каждые 2 года количество транзисторов в интегральной микросхеме удваивается.
- 52. Скачать презентацию