Скачать презентацию Введение в многопоточность Докладчики Илья Шишкарев Дата 05 Скачать презентацию Введение в многопоточность Докладчики Илья Шишкарев Дата 05

Concurrency.pptx

  • Количество слайдов: 21

Введение в многопоточность Докладчики: Илья Шишкарев Дата: 05. 07. 2016 Введение в многопоточность Докладчики: Илья Шишкарев Дата: 05. 07. 2016

План 1. Краткий исторический обзор многопоточности 2. Терминология многопоточности 3. Основная проблематика 4. Основные План 1. Краткий исторический обзор многопоточности 2. Терминология многопоточности 3. Основная проблематика 4. Основные методы синхронизации 5. Место многопоточности в Java 2

Исторический экскурс 1980 -е гг. - зарождение 1990 -е гг. - Windows NT 1995 Исторический экскурс 1980 -е гг. - зарождение 1990 -е гг. - Windows NT 1995 г. - Java 2000 г. -. NET

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

Потоки и процессы Потоки и процессы

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

Race condition Состояние гонки(race condition) - следствие ошибки в проектировании многопоточной системы, при которой Race condition Состояние гонки(race condition) - следствие ошибки в проектировании многопоточной системы, при которой результат работы системы зависит от порядка, в котором потоки выполняю интсрукции, и (иногда) нарушает заложенную логику системы.

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

Основные концепции синхронизации потоков мьютекс семафор монитор барьерная синхронизация Основные концепции синхронизации потоков мьютекс семафор монитор барьерная синхронизация

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

Семафор – обобщение понятия мьютекса на случай n потоков, где n – натуральное. Семафор Семафор – обобщение понятия мьютекса на случай n потоков, где n – натуральное. Семафор позволяет одновременный доступ не более чем n потокам.

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

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

Взаимная блокировка (deadlock) ситуация в многопоточном программировании, когда несколько потоков находятся в состоянии бесконечного Взаимная блокировка (deadlock) ситуация в многопоточном программировании, когда несколько потоков находятся в состоянии бесконечного ожидания ресурсов, занятого самими этими потоками.

Многопоточность в Java поддерживает многопоточность out of the box. Мониторы реализованы на уровне встроенных Многопоточность в Java поддерживает многопоточность out of the box. Мониторы реализованы на уровне встроенных механизмом языка. К услугам разработчиков богатая коллекция примитивов сихнронизации, атомарные обертки и т. д.

Вопросы? Вопросы?