🗊Презентация Параллельное программирование. Проблемы многопоточных приложений. Примитивы синхронизации потоков

Нажмите для полного просмотра!
Параллельное программирование. Проблемы многопоточных приложений. Примитивы синхронизации потоков, слайд №1Параллельное программирование. Проблемы многопоточных приложений. Примитивы синхронизации потоков, слайд №2Параллельное программирование. Проблемы многопоточных приложений. Примитивы синхронизации потоков, слайд №3Параллельное программирование. Проблемы многопоточных приложений. Примитивы синхронизации потоков, слайд №4Параллельное программирование. Проблемы многопоточных приложений. Примитивы синхронизации потоков, слайд №5Параллельное программирование. Проблемы многопоточных приложений. Примитивы синхронизации потоков, слайд №6Параллельное программирование. Проблемы многопоточных приложений. Примитивы синхронизации потоков, слайд №7Параллельное программирование. Проблемы многопоточных приложений. Примитивы синхронизации потоков, слайд №8Параллельное программирование. Проблемы многопоточных приложений. Примитивы синхронизации потоков, слайд №9Параллельное программирование. Проблемы многопоточных приложений. Примитивы синхронизации потоков, слайд №10Параллельное программирование. Проблемы многопоточных приложений. Примитивы синхронизации потоков, слайд №11Параллельное программирование. Проблемы многопоточных приложений. Примитивы синхронизации потоков, слайд №12Параллельное программирование. Проблемы многопоточных приложений. Примитивы синхронизации потоков, слайд №13Параллельное программирование. Проблемы многопоточных приложений. Примитивы синхронизации потоков, слайд №14Параллельное программирование. Проблемы многопоточных приложений. Примитивы синхронизации потоков, слайд №15Параллельное программирование. Проблемы многопоточных приложений. Примитивы синхронизации потоков, слайд №16Параллельное программирование. Проблемы многопоточных приложений. Примитивы синхронизации потоков, слайд №17Параллельное программирование. Проблемы многопоточных приложений. Примитивы синхронизации потоков, слайд №18Параллельное программирование. Проблемы многопоточных приложений. Примитивы синхронизации потоков, слайд №19Параллельное программирование. Проблемы многопоточных приложений. Примитивы синхронизации потоков, слайд №20Параллельное программирование. Проблемы многопоточных приложений. Примитивы синхронизации потоков, слайд №21Параллельное программирование. Проблемы многопоточных приложений. Примитивы синхронизации потоков, слайд №22Параллельное программирование. Проблемы многопоточных приложений. Примитивы синхронизации потоков, слайд №23Параллельное программирование. Проблемы многопоточных приложений. Примитивы синхронизации потоков, слайд №24Параллельное программирование. Проблемы многопоточных приложений. Примитивы синхронизации потоков, слайд №25Параллельное программирование. Проблемы многопоточных приложений. Примитивы синхронизации потоков, слайд №26Параллельное программирование. Проблемы многопоточных приложений. Примитивы синхронизации потоков, слайд №27Параллельное программирование. Проблемы многопоточных приложений. Примитивы синхронизации потоков, слайд №28Параллельное программирование. Проблемы многопоточных приложений. Примитивы синхронизации потоков, слайд №29Параллельное программирование. Проблемы многопоточных приложений. Примитивы синхронизации потоков, слайд №30Параллельное программирование. Проблемы многопоточных приложений. Примитивы синхронизации потоков, слайд №31Параллельное программирование. Проблемы многопоточных приложений. Примитивы синхронизации потоков, слайд №32Параллельное программирование. Проблемы многопоточных приложений. Примитивы синхронизации потоков, слайд №33Параллельное программирование. Проблемы многопоточных приложений. Примитивы синхронизации потоков, слайд №34Параллельное программирование. Проблемы многопоточных приложений. Примитивы синхронизации потоков, слайд №35Параллельное программирование. Проблемы многопоточных приложений. Примитивы синхронизации потоков, слайд №36Параллельное программирование. Проблемы многопоточных приложений. Примитивы синхронизации потоков, слайд №37Параллельное программирование. Проблемы многопоточных приложений. Примитивы синхронизации потоков, слайд №38Параллельное программирование. Проблемы многопоточных приложений. Примитивы синхронизации потоков, слайд №39Параллельное программирование. Проблемы многопоточных приложений. Примитивы синхронизации потоков, слайд №40Параллельное программирование. Проблемы многопоточных приложений. Примитивы синхронизации потоков, слайд №41Параллельное программирование. Проблемы многопоточных приложений. Примитивы синхронизации потоков, слайд №42Параллельное программирование. Проблемы многопоточных приложений. Примитивы синхронизации потоков, слайд №43Параллельное программирование. Проблемы многопоточных приложений. Примитивы синхронизации потоков, слайд №44Параллельное программирование. Проблемы многопоточных приложений. Примитивы синхронизации потоков, слайд №45Параллельное программирование. Проблемы многопоточных приложений. Примитивы синхронизации потоков, слайд №46Параллельное программирование. Проблемы многопоточных приложений. Примитивы синхронизации потоков, слайд №47Параллельное программирование. Проблемы многопоточных приложений. Примитивы синхронизации потоков, слайд №48Параллельное программирование. Проблемы многопоточных приложений. Примитивы синхронизации потоков, слайд №49Параллельное программирование. Проблемы многопоточных приложений. Примитивы синхронизации потоков, слайд №50Параллельное программирование. Проблемы многопоточных приложений. Примитивы синхронизации потоков, слайд №51

Содержание

Вы можете ознакомиться и скачать презентацию на тему Параллельное программирование. Проблемы многопоточных приложений. Примитивы синхронизации потоков. Доклад-сообщение содержит 51 слайдов. Презентации для любого класса можно скачать бесплатно. Если материал и наш сайт презентаций Mypresentation Вам понравились – поделитесь им с друзьями с помощью социальных кнопок и добавьте в закладки в своем браузере.

Слайды и текст этой презентации


Слайд 1





Параллельное программирование
Проблемы многопоточных приложений. 
Примитивы синхронизации потоков.
Описание слайда:
Параллельное программирование Проблемы многопоточных приложений. Примитивы синхронизации потоков.

Слайд 2





План лекции
Проблемы многопоточных приложений
Введение
Задачи читателей и писателей
Задачи спящего парикмахера
Не DeadLock
Доступ к разделяемым данным
Atomicity-Violation Bugs
Order-Violation Bugs
DeadLock
Примеры MSSQL
Примитивы синхронизации
Критические секции
Мьютексы
Семафоры
События
Обработка таймаутов
Описание слайда:
План лекции Проблемы многопоточных приложений Введение Задачи читателей и писателей Задачи спящего парикмахера Не DeadLock Доступ к разделяемым данным Atomicity-Violation Bugs Order-Violation Bugs DeadLock Примеры MSSQL Примитивы синхронизации Критические секции Мьютексы Семафоры События Обработка таймаутов

Слайд 3





Простое различие
Последовательная программа - программа, которая выполняет логическую операцию и когда она заканчивается, выполняет следующую логическую операцию.
Параллельная программа - это набор независимых последовательных операций, выполняющихся одновременно.
Описание слайда:
Простое различие Последовательная программа - программа, которая выполняет логическую операцию и когда она заканчивается, выполняет следующую логическую операцию. Параллельная программа - это набор независимых последовательных операций, выполняющихся одновременно.

Слайд 4





Реализация параллельных вычислений
 Многопоточная
 Многопроцессная
 Распределенная
Описание слайда:
Реализация параллельных вычислений Многопоточная Многопроцессная Распределенная

Слайд 5





Parallelism vs Concurrency
Описание слайда:
Parallelism vs Concurrency

Слайд 6





Parallelism vs Concurrency
Сходства
Более быстрое выполнение по сравнению с одной очередью
Последовательное выполнение в рамках одной очереди
Борьба за ресурсы 
(теряется скорость паралеллизма)
Описание слайда:
Parallelism vs Concurrency Сходства Более быстрое выполнение по сравнению с одной очередью Последовательное выполнение в рамках одной очереди Борьба за ресурсы (теряется скорость паралеллизма)

Слайд 7





Parallelism vs Concurrency
Отличия
В случае Concurrency 
необходима очередь
первый получает любой подарок
В случае Parallelism
очередь не нужна (выигрыш по скорости)
заранее известно кто какой подарок возьмет
Описание слайда:
Parallelism vs Concurrency Отличия В случае Concurrency необходима очередь первый получает любой подарок В случае Parallelism очередь не нужна (выигрыш по скорости) заранее известно кто какой подарок возьмет

Слайд 8





Parallelism vs Concurrency
Лабораторная работа №1
Concurrency ?
Parallelism?
Описание слайда:
Parallelism vs Concurrency Лабораторная работа №1 Concurrency ? Parallelism?

Слайд 9





Проблемы
Shared resources
DeadLocks
ABA problem
Описание слайда:
Проблемы Shared resources DeadLocks ABA problem

Слайд 10





Проблемы и примеры
SharedResources
Банковский счет (неверная запись переменной)
Слишком много молока (одновременное выполнение действия)
Проблема спящего парикмахера (неверное состояние системы)

DeadLocks
Проблема обедающих философов (взаимная блокировка, бездействие, простаивание)
ABA problem
Описание слайда:
Проблемы и примеры SharedResources Банковский счет (неверная запись переменной) Слишком много молока (одновременное выполнение действия) Проблема спящего парикмахера (неверное состояние системы) DeadLocks Проблема обедающих философов (взаимная блокировка, бездействие, простаивание) ABA problem

Слайд 11





Проблемы и примеры
SharedResources
Описание слайда:
Проблемы и примеры SharedResources

Слайд 12





Гонки потоков.
Банковский счет.
Описание слайда:
Гонки потоков. Банковский счет.

Слайд 13





Гонки потоков.
Терминал оператора.
Описание слайда:
Гонки потоков. Терминал оператора.

Слайд 14





Гонки потоков.
Одновременное снятие.
Описание слайда:
Гонки потоков. Одновременное снятие.

Слайд 15





Гонки потоков.
Длительные операции.
Описание слайда:
Гонки потоков. Длительные операции.

Слайд 16





Гонки потоков.
Длительные операции.
Нужна блокировка двойного выполнения.
Варианты?
Описание слайда:
Гонки потоков. Длительные операции. Нужна блокировка двойного выполнения. Варианты?

Слайд 17





Гонки потоков.
Длительные операции.
Описание слайда:
Гонки потоков. Длительные операции.

Слайд 18





Критическая секция
Участок исполняемого кода программы, в котором производится доступ к общему ресурсу (данным или устройству), который не должен быть одновременно использован более чем одним потоком исполнения. 
При нахождении в критической секции двух (или более) процессов возникает состояние «гонки» («состязания»).
Описание слайда:
Критическая секция Участок исполняемого кода программы, в котором производится доступ к общему ресурсу (данным или устройству), который не должен быть одновременно использован более чем одним потоком исполнения. При нахождении в критической секции двух (или более) процессов возникает состояние «гонки» («состязания»).

Слайд 19





Гонки потоков.
Одновременное снятие.
Эксклюзивный
доступ
Описание слайда:
Гонки потоков. Одновременное снятие. Эксклюзивный доступ

Слайд 20





Гонки потоков.
Двойное списание.
Описание слайда:
Гонки потоков. Двойное списание.

Слайд 21





Гонки потоков.
Невозможность снятия.
Описание слайда:
Гонки потоков. Невозможность снятия.

Слайд 22





Гонки потоков.
Невозможность снятия.
Описание слайда:
Гонки потоков. Невозможность снятия.

Слайд 23





Гонки потоков.
Подвисание интерфейса.
Описание слайда:
Гонки потоков. Подвисание интерфейса.

Слайд 24





Гонки потоков.
Подвисание интерфейса.
Описание слайда:
Гонки потоков. Подвисание интерфейса.

Слайд 25





Гонки потоков.
Трансфер денег.
Описание слайда:
Гонки потоков. Трансфер денег.

Слайд 26





SharedResources.
Безопасная запись.
Доступ к ресурсу не изменяет ресурс – например операция чтения;
Изменение данных является идемпотентным – повторные запросы на изменение приводят к одинаковому результату;
Изменение данных выполняется только одним объектом – персональный доступ, критическая секция.
Описание слайда:
SharedResources. Безопасная запись. Доступ к ресурсу не изменяет ресурс – например операция чтения; Изменение данных является идемпотентным – повторные запросы на изменение приводят к одинаковому результату; Изменение данных выполняется только одним объектом – персональный доступ, критическая секция.

Слайд 27





Проблемы и примеры
DeadLocks
Описание слайда:
Проблемы и примеры DeadLocks

Слайд 28





Гонки потоков. 
Взаимная блокировка.
Описание слайда:
Гонки потоков. Взаимная блокировка.

Слайд 29





DeadLock
Описание слайда:
DeadLock

Слайд 30





DeadLock
Описание слайда:
DeadLock

Слайд 31





Проблема обедающих философов.
Пять философов 
Перед каждым тарелка спагетти. 
Между парой философов вилка.
Либо есть двумя вилками 
Либо размышлять
Может посмотреть и взять ближайшую вилку, если она доступна
Может положить вилку
Описание слайда:
Проблема обедающих философов. Пять философов Перед каждым тарелка спагетти. Между парой философов вилка. Либо есть двумя вилками Либо размышлять Может посмотреть и взять ближайшую вилку, если она доступна Может положить вилку

Слайд 32





Проблема обедающих философов.
Нужен алгоритм действия философов.
Варианты?
Описание слайда:
Проблема обедающих философов. Нужен алгоритм действия философов. Варианты?

Слайд 33





Еще проблемы
Livelock – потоки работают, но ничего не делают, потому как не могут захватить все необходимые ресурсы.
Starvation (голодание) – потоку может совсем не доставаться ресурсов. 
Lack of fairness – кому-то достается больше ресурсов, кому то меньше.
Shared Resources – 
DeadLocks – 
ABA - ??
Описание слайда:
Еще проблемы Livelock – потоки работают, но ничего не делают, потому как не могут захватить все необходимые ресурсы. Starvation (голодание) – потоку может совсем не доставаться ресурсов. Lack of fairness – кому-то достается больше ресурсов, кому то меньше. Shared Resources – DeadLocks – ABA - ??

Слайд 34





DeadLocks
Соблюдать последовательность входа и выхода в критические секции
Использовать библиотечные классы (std, boost)
Обрабатывать исключения
Использовать правильную стратегию синхронизации
Описание слайда:
DeadLocks Соблюдать последовательность входа и выхода в критические секции Использовать библиотечные классы (std, boost) Обрабатывать исключения Использовать правильную стратегию синхронизации

Слайд 35





Примитивы синхронизации потоков.
Простые блокирующие методы
Блокирующие конструкции
Сигналы
Неблокирующие конструкции
Описание слайда:
Примитивы синхронизации потоков. Простые блокирующие методы Блокирующие конструкции Сигналы Неблокирующие конструкции

Слайд 36





Примитивы синхронизации потоков.
Простые блокирующие методы
Описание слайда:
Примитивы синхронизации потоков. Простые блокирующие методы

Слайд 37





Простые блокирующие методы
Wait
Sleep
Join
Описание слайда:
Простые блокирующие методы Wait Sleep Join

Слайд 38





Простые блокирующие методы
Ожидание может завершиться по следующим причинам:
Выполнилось условие ожидания
Закончилось время ожидания
Поток прерван функцией TerminateThread
Описание слайда:
Простые блокирующие методы Ожидание может завершиться по следующим причинам: Выполнилось условие ожидания Закончилось время ожидания Поток прерван функцией TerminateThread

Слайд 39





Простые блокирующие методы. 
Условие ожидания
Минусы:
Нагрузка на процессор
Простои
Описание слайда:
Простые блокирующие методы. Условие ожидания Минусы: Нагрузка на процессор Простои

Слайд 40





Простые блокирующие методы. 
Таймаут
WaitForSingleObject(.. INFINITE)
WaitForMultipleObjects(.. INFINITE)
Описание слайда:
Простые блокирующие методы. Таймаут WaitForSingleObject(.. INFINITE) WaitForMultipleObjects(.. INFINITE)

Слайд 41





Примитивы синхронизации потоков.
Блокирующие конструкции
Описание слайда:
Примитивы синхронизации потоков. Блокирующие конструкции

Слайд 42





Блокирующие конструкции
Семафор — объект, ограничивающий количество потоков, которые могут войти в заданный участок кода. 
Мьютекс – семафор, разрешающий вход только одному потоку.
Описание слайда:
Блокирующие конструкции Семафор — объект, ограничивающий количество потоков, которые могут войти в заданный участок кода. Мьютекс – семафор, разрешающий вход только одному потоку.

Слайд 43





С++ Критическая секция
Назначение: предоставление доступа ОДНОМУ потоку
Скорость:  высокая
Область видимости: процесс
Пример:
CRITICAL_SECTION cs;
InitializeCriticalSection(  &cs);
EnterCriticalSection(  &cs);
// ?? Только один поток
LeaveCriticalSection(  &cs);
DeleteCriticalSection(  &cs);
Описание слайда:
С++ Критическая секция Назначение: предоставление доступа ОДНОМУ потоку Скорость: высокая Область видимости: процесс Пример: CRITICAL_SECTION cs; InitializeCriticalSection( &cs); EnterCriticalSection( &cs); // ?? Только один поток LeaveCriticalSection( &cs); DeleteCriticalSection( &cs);

Слайд 44





С++ Мьютекс
Именованная критическая секция, доступная для использования в рамках операционной системы.
Назначение: предоставление доступа ОДНОМУ потоку
Скорость:  медленнее
Область видимости: ОС
Пример:
HANDLE hMutex;
hMutex = CreateMutex(  NULL, false, NULL);
WaitForSingleObject(hMutex, INFINITE);
// ?? Только один поток
ReleaseMutex(  hMutex);
CloseHandle(  &cs);
Описание слайда:
С++ Мьютекс Именованная критическая секция, доступная для использования в рамках операционной системы. Назначение: предоставление доступа ОДНОМУ потоку Скорость: медленнее Область видимости: ОС Пример: HANDLE hMutex; hMutex = CreateMutex( NULL, false, NULL); WaitForSingleObject(hMutex, INFINITE); // ?? Только один поток ReleaseMutex( hMutex); CloseHandle( &cs);

Слайд 45





С++ Семафор
Назначение: предоставление доступа НЕСКОЛЬКИМ потокам
Скорость:  медленнее
Область видимости: ОС
Пример:
HANDLE hSemaphore;
hSemaphore = CreateSemaphore(NULL, [CURRENT],[MAX], NULL);
WaitForSingleObject(hSemaphore, INFINITE);
// ?? Не более MAX потоков
ReleaseSemaphore(hSemaphore, 1, NULL);
Описание слайда:
С++ Семафор Назначение: предоставление доступа НЕСКОЛЬКИМ потокам Скорость: медленнее Область видимости: ОС Пример: HANDLE hSemaphore; hSemaphore = CreateSemaphore(NULL, [CURRENT],[MAX], NULL); WaitForSingleObject(hSemaphore, INFINITE); // ?? Не более MAX потоков ReleaseSemaphore(hSemaphore, 1, NULL);

Слайд 46





Примитивы синхронизации потоков.
Сигналы
Описание слайда:
Примитивы синхронизации потоков. Сигналы

Слайд 47





С++ Событие
HANDLE hEvent;
hEvent = CreateEvent(NULL, false (autoreset event), false, NULL);
WaitForSingleObject(hEvent, INFINITE);
// ?? один поток за счет autoreset
CloseHandle(hEvent);
Описание слайда:
С++ Событие HANDLE hEvent; hEvent = CreateEvent(NULL, false (autoreset event), false, NULL); WaitForSingleObject(hEvent, INFINITE); // ?? один поток за счет autoreset CloseHandle(hEvent);

Слайд 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
https://msdn.microsoft.com/en-us/library/ff601929.aspx
https://msdn.microsoft.com/en-us/library/1c9txz50(v=vs.110).aspx
Описание слайда:
Список литературы Википедия Введение 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 https://msdn.microsoft.com/en-us/library/ff601929.aspx https://msdn.microsoft.com/en-us/library/1c9txz50(v=vs.110).aspx

Слайд 49





Введение в параллельное программирование
Описание слайда:
Введение в параллельное программирование

Слайд 50





Знаменитый закон Мура
I Закон Мура (1965): каждые 2 года количество транзисторов в интегральной микросхеме удваивается.
Следствие Хауса: производительность центрального процессора компьютера удваивается каждые 18 месяцев.
Мур, 2007: закономерности перестанут работать вследствие атомарной природы вещества и ограничения скорости света.
Описание слайда:
Знаменитый закон Мура I Закон Мура (1965): каждые 2 года количество транзисторов в интегральной микросхеме удваивается. Следствие Хауса: производительность центрального процессора компьютера удваивается каждые 18 месяцев. Мур, 2007: закономерности перестанут работать вследствие атомарной природы вещества и ограничения скорости света.

Слайд 51





Вопросы
Описание слайда:
Вопросы



Похожие презентации
Mypresentation.ru
Загрузить презентацию