multi threads

Post on 16-Jun-2015

592 Views

Category:

Documents

2 Downloads

Preview:

Click to see full reader

DESCRIPTION

Power Point презентация на тему многопоточное программирование.Выполнила: Архилюк Анна

TRANSCRIPT

Многопоточное программирование

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

Объект исполнения прикладной программы операционной системой представляется двумя понятиямиПроцессПоток

ПроцессПроцесс

ПроцессПроцесс (process (process))- экземпляр программы, загруженной - экземпляр программы, загруженной в памятьв память

Процесс – пассивный объект–владелец ресурсов, Процесс – пассивный объект–владелец ресурсов, контейнер для выполнения контейнер для выполнения потоков (потоков (threadthread))

Поток / нить (Поток / нить (threadthread))ПотокПоток - абстракция, представляющая - абстракция, представляющая последовательное выполнение команд программы, последовательное выполнение команд программы, развертывающееся во времениразвертывающееся во времени

Выполняются не процессы, а именно потокиВыполняются не процессы, а именно потоки

Любой процесс имеет хотя бы один потокЛюбой процесс имеет хотя бы один поток

Поток / нить (Поток / нить (threadthread))

Потоки Потоки совместно совместно используютиспользуют глобальные и статические глобальные и статические

переменные переменные (располагаются в регионе (располагаются в регионе данных)данных)

динамически динамически распределяемую память распределяемую память (кучу)(кучу)

системные ресурсы, системные ресурсы,

выделенные процессувыделенные процессу

Каждый поток имеет Каждый поток имеет свои свои собственныесобственные программный счетчик программный счетчик

(IP)(IP) значения регистровзначения регистров локальные переменные локальные переменные

(т.е. свой собственный (т.е. свой собственный стек)стек)

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

Поток

Процесс

Поток

Процесс

Поток

Процесс

Поток

Поток

Процесс

Поток

Процесс

Поток

Поток

ПотокПоток

один потокв процессе

несколькопотоков

в процессе

один процесс несколько процессов

MS-DOS UNIXby

design

Java WinNT,Linux,Mach,

Состояния потокаСостояния потока

Готов к выполнени

ю

Блокировка

Создание

Завершение

1

23

4Выполнение

5

6

Планирование

Планирование – распределение времени центрального процессора

Процесс

Поток

Процесс

Поток

Поток

Поток

Поток

Процесс

Поток

ПотокЦентральный

процессор

Поток

График выполнения потока

Один поток – один процессор

Длинные блоки вычислений

Короткие блоки вычислений

Ожидание ввода-вывода

а)

б)

Время

График выполнения потока

Несколько потоков – один процессор

Завершение состояния ожидания – переход в состояние «готов к исполнению»

Поток 2

Время

Поток 1

Поток в состоянии «готов к исполнению»

Нет готовых к выполнению потоков

Несколько потоков – несколько процессоров

График выполнения потока

Ожидание ввода-вывода или нахождение в

состоянии ожидания Поток2

Время

Поток1

Механизм, позволяющий потокам согласовывать свою работу с общими ресурсами называется механизмом синхронизации

Синхронизация потоков

Поток А

x = x+3

Поток В

x = x + 5

Синхронизация потоков

x = x+a

(1) Прочитать x

(2) Увеличить на a

(3) Записать в x

Основные объекты синхронизации

Синхронизация потоков

Ресурс свободен?

Занять ресурс

Да

Нет

Необходим доступ к ресурсу

Критическая секция

Освободить ресурс

Работа с признаком занятости

(блокировки) ресурса

Тупиковые ситуации

Поток Т1

заблокировать А … заблокировать В … освободить А освободить В

Поток Т2

заблокировать В … заблокировать А … освободить В освободить А

Тупиковые ситуации

t

Поток Т1

Поток Т2

Ресурс А

Ресурс В

1 2 3

1 2

Поток в состоянии

«блокировка»

Ресурс «свободен / заблокирован»

Вывод

Понимание диаграмм выполнения потоков – ключевой момент при разработке и отладке многопоточных программ

Неумелое использование средств синхронизации – источник трудно находимых ошибок и потерь производительности

top related