Что такое findslide.org?

FindSlide.org - это сайт презентаций, докладов, шаблонов в формате PowerPoint.


Для правообладателей

Обратная связь

Email: Нажмите что бы посмотреть 

Яндекс.Метрика

Презентация на тему Асинхронные операции как часть параллельного программирования. Потоки, примитивы синхронизации в c+ +. Привязка к ядрам

Содержание

Введение в параллельное программирование“To put it quite bluntly: as long as there were nomachines, programming was no problem at all;when we had a few weak computers,programming became a mild problem, and nowwe have gigantic computers, programming
Параллельное программированиеВВЕДЕНИЕ В ПАРАЛЛЕЛЬНОЕ ПРОГРАММИРОВАНИЕ.АСИНХРОННЫЕ ОПЕРАЦИИ КАК ЧАСТЬ ПАРАЛЛЕЛЬНОГО ПРОГРАММИРОВАНИЯ. ПОТОКИ, ПРИМИТИВЫ Введение в параллельное программирование“To put it quite bluntly: as long as there Знаменитый закон МураI Закон Мура (1965): каждые 2 года количество транзисторов в Первый кризис ПО60-70 годы 20 векаПроблема - язык программирования ассемблер. Компьютеры были Первый кризис ПОРешениеПоявление языков высокого уровня С и Фортран. Появление общих свойств Второй кризис ПО80-90 годы 20 векаПроблема: невозможность разработки сложных программ, состоящих из Второй кризис ПОРешениеПоявление ООП и развитие языков высокого уровня С#, Java, C++. Назревает третий кризис ПООсобенностиЧеткая граница между программой и железом. Программисты больше ничего Назревает третий кризис ПОПроблемаВысокий уровень абстракции не дает программистам достаточной мотивации писать Шутка- Скажи мне, Microsofе Office, почему ресурс моего компьютера позволяет в онлайне Выводы из действия закона МураРаньше – производительность процессора росла сама по себе, АлгоритмАлгоритм – упорядоченная последовательность действий, приводящая к определенному результату.Задача: z = u∙x + v∙y ПрограммаПрограмма – способ выполнения алгоритма на определенном вычислителе. По сути набор инструкций, Программа1.load r1, u2.load r2, x3.mul r3, r1,r24.load r1, v5.load r2, y6.mul r4, РеализацияРеализация – способ реализации алгоритма при помощи программы. Это множество путей выполнения алгоритма, часто неоптимальных. Вы «царь и бог» Компоненты вычислителя• исполнительные устройства, ядра, процессоры, вычислительные узлы, кластера, … • блоки Системы с общей памятьюМногоядерные процессорыМногопроцессорные узлы…   Системы с распределенной памятьюСети рабочих станцийКластераGrid… Общая иерархия Меры качества параллельных программПроизводительность системы равняется производительности ее самого слабого звена.. Поход бойскаутовAB10 км Поход бойскаутов2 км/часWTF??? Поход бойскаутов2 км/часWTF??? Поход бойскаутов5 км/час Меры качества параллельных программ Время работыСколько времени программа работает на N ПримерХорошо масштабируетсяПлохо масштабируется Меры качества параллельных программ Ускорение Ускорение параллельной программы при использовании N ПримерХорошо масштабируетсяПлохо масштабируется Меры качества параллельных программ Эффективность распараллеливанияЭффективность использования N исполнительных устройств относительно…•последовательной ПримерХорошо масштабируетсяПлохо масштабируется Предел ускорения: закон Амдала α – доля последовательных вычислений [0;1] Предел ускорения: закон Амдала α – доля последовательных вычислений [0;1]1 Предел ускорения: закон Амдала α – доля последовательных вычислений [0;1]1 Предел ускорения: закон Амдала α – доля последовательных вычислений [0;1]1 Предел ускорения: закон Амдала Ускорение, которое может быть получено на Предел ускорения: закон Амдала Ускорение, которое может быть получено на Предел ускорения: закон Амдала Если доля последовательных вычислений в алгоритме Предел ускорения: закон Амдала Способы реализация параллельных вычисленийПроцесс (process) – работающий в текущий момент экземпляр программы Способы реализация параллельных вычисленийПроцесс (process) – работающий в текущий момент экземпляр программыМногозадачность Способы реализация параллельных вычисленийПроцесс (process) – работающий в текущий момент экземпляр программыМногозадачность Способы реализация параллельных вычисленийПроцесс (process) – работающий в текущий момент экземпляр программыМногозадачность Главный поток – поток, создаваемый для выполнения программы по умолчанию. Способы реализация параллельных вычислений Способы реализация параллельных вычислений Максимально нагруженная программа Максимально нагруженная программаНа сколько % будет загружен четырех-ядерный процессор? Максимально нагруженная программа Асинхронные операции vs паралелльные вычисления Проблемы UIОбрабатываются запросы пользователя.Рисуется интерфейс.Выполняется полезная работа. МногопоточностьОперации А1-А4 могут выполняться независимо, за их одновременное выполнение отвечает планировщик Windows. Отзывчивость интерфейса Начальная ситуацияПовар готовит роллы == последовательная программа ПараллельностьМного поваров готовит роллы == параллельная реализация АсинхронностьПовар готовит роллы, помощник варит рис == асинхронность Асинхронные операции vs паралелльные вычисленияОперации, которые выполняются не прерывая основной поток выполнения Асинхронные операцииПримерыСкачивание интернет-ресурсаВзаимодействие с серверомФоновое копирование файлов в Total CommanderИ т.д. Потоки ПотокиСтандарт POSIX.1c, Threads extensions (IEEE Std 1003.1c-1995) определяет API для управления потоками, их синхронизации и планирования. Основные функцииСоздание потокаПередача параметров в потокОжидание окончания потокаУстановка приоритета потокаПривязка потока к Пример Пример 1. РезультатBBBBBBBBBBBBBBBBBBABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABAAAAAAAAAAAAAAAAAA Создание потокаCreateThreadlpThreadAttributes – указатель на SECURITY_ATTRIBUTES (чаще всего NULL)dwStackSize - размер стека в Удаление потокаОстановка выполненияTerminateThreadhThread – хендл потокаdwExitCode – код выхода потокаУдаление хендлаCloseHandlehThread – хендл потока Изменение приоритета потокаОстановка выполненияTerminateThreadhThread – хендл потокаdwExitCode – код выхода потокаУдаление хендлаCloseHandlehThread – хендл потока Другие операцииSetThreadPriority(handles[0], THREAD_PRIORITY_ABOVE_NORMAL);SetThreadPriority(handles[1], THREAD_PRIORITY_BELOW_NORMAL);Every thread has a base priority level determined by Результат выполнения?ABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABAB Привязка потоков к ядрам Привязка потоков к ядрамSetThreadAffinityMask(HANDLE hThread, DWORD_PTR dwThreadAffinityMask)dwThreadAffinityMask – число, установленный i-ый бит Привязка потоков к ядрамSetThreadAffinityMask(handles[0], 1);SetThreadAffinityMask(handles[1], 1);AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB Исключения в потокахif( i == 99)	i = i / 0; // exception thrown Вопросы
Слайды презентации

Слайд 2 Введение в параллельное программирование
“To put it quite bluntly:

Введение в параллельное программирование“To put it quite bluntly: as long as

as long as there were no
machines, programming was no

problem at all;
when we had a few weak computers,
programming became a mild problem, and now
we have gigantic computers, programming has
become an equally gigantic problem."

-- E. Dijkstra, 1972 Turing Award Lecture


Слайд 3 Знаменитый закон Мура
I Закон Мура (1965): каждые 2

Знаменитый закон МураI Закон Мура (1965): каждые 2 года количество транзисторов

года количество транзисторов в интегральной микросхеме удваивается.
Следствие Хауса: производительность

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


Слайд 4 Первый кризис ПО
60-70 годы 20 века
Проблема - язык

Первый кризис ПО60-70 годы 20 векаПроблема - язык программирования ассемблер. Компьютеры

программирования ассемблер.
Компьютеры были готовы обрабатывать гораздо более сложные

программы, чем могли писать люди.
Для устранения была необходима абстракция над машинным кодом и переносимость программ между вычислителями.

Слайд 5 Первый кризис ПО
Решение
Появление языков высокого уровня С и

Первый кризис ПОРешениеПоявление языков высокого уровня С и Фортран. Появление общих

Фортран. Появление общих свойств у разных вычислителей. Модель ФонНеймана.

Единая память. Единственный поток управления.



Слайд 6 Второй кризис ПО
80-90 годы 20 века
Проблема: невозможность разработки

Второй кризис ПО80-90 годы 20 векаПроблема: невозможность разработки сложных программ, состоящих

сложных программ, состоящих из миллионов строк кода, которые разрабатываются

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


Слайд 7 Второй кризис ПО
Решение
Появление ООП и развитие языков высокого

Второй кризис ПОРешениеПоявление ООП и развитие языков высокого уровня С#, Java,

уровня С#, Java, C++. Появление библиотек и инструментов для

написания, отладки и тестирования программ. Разработка различных методологий построения программного обеспечения. Появление методологий автоматического тестирования, ревью кода, XP программирования.


Слайд 8 Назревает третий кризис ПО
Особенности
Четкая граница между программой и

Назревает третий кризис ПООсобенностиЧеткая граница между программой и железом. Программисты больше

железом.
Программисты больше ничего не должны знать о процессорах

и их регистрах.
Высокоуровневые языки полностью абстрагируют программу от платформы исполнения.
Закон Мура все еще позволяет программистам получать хорошую скорость выполнения за счет мощных процессоров.
Программы одинаково хорошо работают на разных процессорах.
Такой подход развязывает руки программистам..


Слайд 9 Назревает третий кризис ПО
Проблема
Высокий уровень абстракции не дает

Назревает третий кризис ПОПроблемаВысокий уровень абстракции не дает программистам достаточной мотивации

программистам достаточной мотивации писать оптимальные программы, которые работают максимально

быстро. Вместо этого скорость работы достигается путем появления новых процессоров.

Слайд 10 Шутка
- Скажи мне, Microsofе Office, почему ресурс моего

Шутка- Скажи мне, Microsofе Office, почему ресурс моего компьютера позволяет в

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

боевых спутников, отслеживающих пролет тысяч баллистических ракет врага, но не в состоянии без лагов прогружать страницу в Excel когда там более двух вкладок?)))
- Потому что ваш компьютер не удовлетворяет минимальным системным требованиям для офиса, так как все ресурсы уходят на слежение за вами. Чем я еще могу вам помочь?


http://pikabu.ru/story/kakim_glazom_ya_seychas_morgnul_4423571

Слайд 11 Выводы из действия закона Мура
Раньше – производительность процессора

Выводы из действия закона МураРаньше – производительность процессора росла сама по

росла сама по себе, медленная программа с ходом времени

работала все быстрее.

Теперь – последовательная производительность процессора практически не растет, программист должен использовать параллельные вычисления, чтобы ускорить программу


Слайд 12 Алгоритм
Алгоритм – упорядоченная последовательность действий, приводящая к определенному

АлгоритмАлгоритм – упорядоченная последовательность действий, приводящая к определенному результату.Задача: z = u∙x + v∙y

результату.


Задача: z = u∙x + v∙y


Слайд 13 Программа
Программа – способ выполнения алгоритма на определенном вычислителе.

ПрограммаПрограмма – способ выполнения алгоритма на определенном вычислителе. По сути набор

По сути набор инструкций, приводящий к определенному результату.

1.load r1,

u
2.load r2, x
3.mul r3, r1,r2
4.load r1, v
5.load r2, y
6.mul r4, r1,r2
7.add r1, r3,r4
8.store z, r1

Слайд 14 Программа
1.load r1, u
2.load r2, x
3.mul r3, r1,r2
4.load r1,

Программа1.load r1, u2.load r2, x3.mul r3, r1,r24.load r1, v5.load r2, y6.mul

v
5.load r2, y
6.mul r4, r1,r2
7.add r1, r3,r4
8.store z, r1


Слайд 15 Реализация
Реализация – способ реализации алгоритма при помощи программы.

РеализацияРеализация – способ реализации алгоритма при помощи программы. Это множество путей выполнения алгоритма, часто неоптимальных.

Это множество путей выполнения алгоритма, часто неоптимальных.


Слайд 16 Вы «царь и бог»

Вы «царь и бог»

Слайд 17 Компоненты вычислителя
• исполнительные устройства, ядра, процессоры, вычислительные узлы,

Компоненты вычислителя• исполнительные устройства, ядра, процессоры, вычислительные узлы, кластера, … •

кластера, …

• блоки памяти - Оперативная память, кэш-память,

дисковая память …

• связи - Процессор-память, межпроцессорные, межузловые, межкластерные, …



Слайд 18 Системы с общей памятью
Многоядерные процессоры
Многопроцессорные узлы
…  

Системы с общей памятьюМногоядерные процессорыМногопроцессорные узлы…  

Слайд 19 Системы с распределенной памятью
Сети рабочих станций
Кластера
Grid

Системы с распределенной памятьюСети рабочих станцийКластераGrid…

Слайд 20 Общая иерархия

Общая иерархия

Слайд 21 Меры качества параллельных программ
Производительность системы равняется
производительности ее

Меры качества параллельных программПроизводительность системы равняется производительности ее самого слабого звена..

самого слабого звена..


Слайд 22 Поход бойскаутов






A
B
10 км

Поход бойскаутовAB10 км

Слайд 23 Поход бойскаутов
2 км/час






WTF???

Поход бойскаутов2 км/часWTF???

Слайд 24 Поход бойскаутов
2 км/час






WTF???

Поход бойскаутов2 км/часWTF???

Слайд 25 Поход бойскаутов
5 км/час








Поход бойскаутов5 км/час

Слайд 26 Меры качества параллельных программ
Время работы
Сколько времени программа

Меры качества параллельных программ Время работыСколько времени программа работает на

работает на N ядрах?
Ускорение
Во сколько раз программа стала быстрее

работать на N ядрах по сравнению с одним ядром / последовательной программой?
Эффективность распараллеливания
Какой процент времени работы программы идёт на полезную работу?
Масштабируемость
Как быстро эффективность падает с ростом числа ядер?


Слайд 27 Пример
Хорошо масштабируется
Плохо масштабируется

ПримерХорошо масштабируетсяПлохо масштабируется

Слайд 28 Меры качества параллельных программ
Ускорение
Ускорение параллельной программы

Меры качества параллельных программ Ускорение Ускорение параллельной программы при использовании

при использовании N исполнительных устройств относительно…
•последовательной:

•параллельной

с использованием одного исполнительного устройства:

где:
Tseq – время работы последовательной программы,
T1 – время работы параллельной программы при использовании одного исполнительного устройства,
TN – время работы параллельной программы при использовании N исполнительных устройств.

Слайд 29 Пример
Хорошо масштабируется
Плохо масштабируется

ПримерХорошо масштабируетсяПлохо масштабируется

Слайд 30 Меры качества параллельных программ
Эффективность распараллеливания
Эффективность использования N

Меры качества параллельных программ Эффективность распараллеливанияЭффективность использования N исполнительных устройств

исполнительных устройств относительно…
•последовательной программы:

•параллельной программы с использованием одного исполнительного

устройства:

где:
SseqN – ускорение параллельной программы при использовании N исполнительных устройств относительно последовательной,
S1N – ускорение параллельной программы при использовании N исполнительных устройств относительно параллельной при использовании одного исполнительного устройства.

Слайд 31 Пример
Хорошо масштабируется
Плохо масштабируется

ПримерХорошо масштабируетсяПлохо масштабируется

Слайд 32 Предел ускорения: закон Амдала
α – доля последовательных

Предел ускорения: закон Амдала α – доля последовательных вычислений [0;1]

вычислений [0;1]


Слайд 33 Предел ускорения: закон Амдала
α – доля последовательных

Предел ускорения: закон Амдала α – доля последовательных вычислений [0;1]1

вычислений [0;1]
1 - α – доля параллельных вычислений


Слайд 34 Предел ускорения: закон Амдала
α – доля последовательных

Предел ускорения: закон Амдала α – доля последовательных вычислений [0;1]1

вычислений [0;1]
1 - α – доля параллельных вычислений
1 –

время выполнения последовательной программы


Слайд 35 Предел ускорения: закон Амдала
α – доля последовательных

Предел ускорения: закон Амдала α – доля последовательных вычислений [0;1]1

вычислений [0;1]
1 - α – доля параллельных вычислений
1 –

время выполнения последовательной программы
α+(1- α)/p - время выполнения параллельной программы на p вычислителях


Слайд 36 Предел ускорения: закон Амдала
Ускорение, которое может быть

Предел ускорения: закон Амдала Ускорение, которое может быть получено на

получено на вычислительной системе из p процессоров, по сравнению

с однопроцессорным решением не будет превышать величины:


Слайд 37 Предел ускорения: закон Амдала
Ускорение, которое может быть

Предел ускорения: закон Амдала Ускорение, которое может быть получено на

получено на вычислительной системе из p процессоров, по сравнению

с однопроцессорным решением не будет превышать величины:

При каком значении α будет максимальное ускорение?


Слайд 38 Предел ускорения: закон Амдала


Если доля последовательных вычислений

Предел ускорения: закон Амдала Если доля последовательных вычислений в алгоритме

в алгоритме равна 25 %, то увеличение числа процессоров

до 10 дает ускорение в 3,077 раза, а увеличение числа процессоров до 1000 даст ускорение в 3,988 раза.

Слайд 39 Предел ускорения: закон Амдала

Предел ускорения: закон Амдала

Слайд 40 Способы реализация параллельных вычислений
Процесс (process) – работающий в

Способы реализация параллельных вычисленийПроцесс (process) – работающий в текущий момент экземпляр программы

текущий момент экземпляр программы


Слайд 41 Способы реализация параллельных вычислений
Процесс (process) – работающий в

Способы реализация параллельных вычисленийПроцесс (process) – работающий в текущий момент экземпляр

текущий момент экземпляр программы

Многозадачность (multitasking) – несколько процессов выполняются

условно одновременно за счет операционной системы
Вытесняющая многозадачность
Невытесняющая многозадачность





Слайд 42 Способы реализация параллельных вычислений
Процесс (process) – работающий в

Способы реализация параллельных вычисленийПроцесс (process) – работающий в текущий момент экземпляр

текущий момент экземпляр программы

Многозадачность (multitasking) – несколько процессов выполняются

условно одновременно за счет операционной системы
Вытесняющая многозадачность
Невытесняющая многозадачность

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

Слайд 43 Способы реализация параллельных вычислений
Процесс (process) – работающий в

Способы реализация параллельных вычисленийПроцесс (process) – работающий в текущий момент экземпляр

текущий момент экземпляр программы

Многозадачность (multitasking) – несколько процессов выполняются

условно одновременно за счет операционной системы
Вытесняющая многозадачность
Невытесняющая многозадачность

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

Многопоточность (multithreading) – несколько потоков выполнения кода работают внутри одной программы.


Слайд 44 Главный поток – поток, создаваемый для выполнения программы

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

по умолчанию.

Способы реализация параллельных вычислений


Слайд 45 Способы реализация параллельных вычислений

Способы реализация параллельных вычислений

Слайд 46 Максимально нагруженная программа

Максимально нагруженная программа

Слайд 47 Максимально нагруженная программа
На сколько % будет загружен четырех-ядерный

Максимально нагруженная программаНа сколько % будет загружен четырех-ядерный процессор?

процессор?


Слайд 48 Максимально нагруженная программа

Максимально нагруженная программа

Слайд 49 Асинхронные операции vs паралелльные вычисления

Асинхронные операции vs паралелльные вычисления

Слайд 50 Проблемы UI
Обрабатываются запросы пользователя.
Рисуется интерфейс.
Выполняется полезная работа.

Проблемы UIОбрабатываются запросы пользователя.Рисуется интерфейс.Выполняется полезная работа.

Слайд 51 Многопоточность



Операции А1-А4 могут выполняться независимо, за их одновременное

МногопоточностьОперации А1-А4 могут выполняться независимо, за их одновременное выполнение отвечает планировщик

выполнение отвечает планировщик Windows. Если одна задача подвиснет, то

после истечения определенного кванта времени ее сменит другая задача.

Слайд 52 Отзывчивость интерфейса

Отзывчивость интерфейса

Слайд 53 Начальная ситуация
Повар готовит роллы == последовательная программа

Начальная ситуацияПовар готовит роллы == последовательная программа

Слайд 54 Параллельность
Много поваров готовит роллы == параллельная реализация

ПараллельностьМного поваров готовит роллы == параллельная реализация

Слайд 55 Асинхронность
Повар готовит роллы, помощник варит рис == асинхронность

АсинхронностьПовар готовит роллы, помощник варит рис == асинхронность

Слайд 56 Асинхронные операции vs паралелльные вычисления
Операции, которые выполняются не

Асинхронные операции vs паралелльные вычисленияОперации, которые выполняются не прерывая основной поток

прерывая основной поток выполнения программы, называются асинхронными. Эти операции

служат не для ускорения работы программы, а для удобства использования программы.

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

Слайд 57 Асинхронные операции
Примеры
Скачивание интернет-ресурса
Взаимодействие с сервером
Фоновое копирование файлов в

Асинхронные операцииПримерыСкачивание интернет-ресурсаВзаимодействие с серверомФоновое копирование файлов в Total CommanderИ т.д.

Total Commander
И т.д.


Слайд 58 Потоки

Потоки

Слайд 59 Потоки
Стандарт POSIX.1c, Threads extensions (IEEE Std 1003.1c-1995) определяет

ПотокиСтандарт POSIX.1c, Threads extensions (IEEE Std 1003.1c-1995) определяет API для управления потоками, их синхронизации и планирования.

API для управления потоками, их синхронизации и планирования.


Слайд 60 Основные функции
Создание потока
Передача параметров в поток
Ожидание окончания потока
Установка

Основные функцииСоздание потокаПередача параметров в потокОжидание окончания потокаУстановка приоритета потокаПривязка потока

приоритета потока
Привязка потока к ядру
Окончание потока
Исключения, возникающие в потоке


Слайд 61 Пример

Пример

Слайд 62 Пример 1. Результат
BBBBBBBBBBBBBBBBBBABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABAAAAAAAAAAAAAAAAAA

Пример 1. РезультатBBBBBBBBBBBBBBBBBBABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABAAAAAAAAAAAAAAAAAA

Слайд 63 Создание потока
CreateThread
lpThreadAttributes – указатель на SECURITY_ATTRIBUTES (чаще всего

Создание потокаCreateThreadlpThreadAttributes – указатель на SECURITY_ATTRIBUTES (чаще всего NULL)dwStackSize - размер стека

NULL)
dwStackSize - размер стека в байтах
lpStartAddress - указатель на потоковую процедуру
lpParameter -

параметр потока (4 байта)
dwCreationFlags - параметры создания (чаще всего 0 – поток запускается сразу после создания)


Слайд 64 Удаление потока
Остановка выполнения
TerminateThread
hThread – хендл потока
dwExitCode – код

Удаление потокаОстановка выполненияTerminateThreadhThread – хендл потокаdwExitCode – код выхода потокаУдаление хендлаCloseHandlehThread – хендл потока

выхода потока
Удаление хендла
CloseHandle
hThread – хендл потока


Слайд 65 Изменение приоритета потока
Остановка выполнения
TerminateThread
hThread – хендл потока
dwExitCode –

Изменение приоритета потокаОстановка выполненияTerminateThreadhThread – хендл потокаdwExitCode – код выхода потокаУдаление хендлаCloseHandlehThread – хендл потока

код выхода потока
Удаление хендла
CloseHandle
hThread – хендл потока


Слайд 66 Другие операции
SetThreadPriority(handles[0], THREAD_PRIORITY_ABOVE_NORMAL);
SetThreadPriority(handles[1], THREAD_PRIORITY_BELOW_NORMAL);

Every thread has a base

Другие операцииSetThreadPriority(handles[0], THREAD_PRIORITY_ABOVE_NORMAL);SetThreadPriority(handles[1], THREAD_PRIORITY_BELOW_NORMAL);Every thread has a base priority level determined

priority level determined by the thread's priority value and

the priority class of its process. The system uses the base priority level of all executable threads to determine which thread gets the next slice of CPU time. Threads are scheduled in a round-robin fashion at each priority level, and only when there are no executable threads at a higher level does scheduling of threads at a lower level take place.


Слайд 67 Результат выполнения?
ABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABAB

Результат выполнения?ABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABAB

Слайд 68 Привязка потоков к ядрам

Привязка потоков к ядрам

Слайд 69 Привязка потоков к ядрам
SetThreadAffinityMask(HANDLE hThread, DWORD_PTR dwThreadAffinityMask)
dwThreadAffinityMask –

Привязка потоков к ядрамSetThreadAffinityMask(HANDLE hThread, DWORD_PTR dwThreadAffinityMask)dwThreadAffinityMask – число, установленный i-ый

число, установленный i-ый бит (== 1), которого разрешают потоку

исполняться на i-ом ядре
Например, чтобы разрешить исполнение на 0 и 2 ядре:

0

0

0

0

0

0

1

0

1

= 5


Слайд 70 Привязка потоков к ядрам
SetThreadAffinityMask(handles[0], 1);
SetThreadAffinityMask(handles[1], 1);

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB

Привязка потоков к ядрамSetThreadAffinityMask(handles[0], 1);SetThreadAffinityMask(handles[1], 1);AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB

Слайд 71 Исключения в потоках
if( i == 99) i = i

Исключения в потокахif( i == 99)	i = i / 0; // exception thrown

/ 0; // exception thrown


  • Имя файла: asinhronnye-operatsii-kak-chast-parallelnogo-programmirovaniya-potoki-primitivy-sinhronizatsii-v-c-privyazka-k-yadram.pptx
  • Количество просмотров: 99
  • Количество скачиваний: 0