Программирование Скачать
презентацию
<<  Программирование Линейное программирование  >>
Многопоточное программирование
Многопоточное программирование
Краткое содержание
Краткое содержание
Введение
Введение
Многопоточное программирование
Многопоточное программирование
Пример
Пример
Пример
Пример
Пример
Пример
Пример
Пример
Пример
Пример
Пример
Пример
Пример
Пример
Основные операции
Основные операции
Пример
Пример
Пример
Пример
Свойства планирования
Свойства планирования
Классические задачи многопоточного программирования
Классические задачи многопоточного программирования
Задача доступа к общему ресурсу
Задача доступа к общему ресурсу
Производитель-потребитель
Производитель-потребитель
Задача о читателях и писателях
Задача о читателях и писателях
Задача об обедающих философах
Задача об обедающих философах
Задания-работники
Задания-работники
Атомарные операции
Атомарные операции
Атомарная операция
Атомарная операция
Виды атомарных операций
Виды атомарных операций
Решение задачи доступа к ресурсу
Решение задачи доступа к ресурсу
Примитивы синхронизации
Примитивы синхронизации
Критическая секция
Критическая секция
Решение задачи доступа к ресурсу
Решение задачи доступа к ресурсу
Реализации критических секций
Реализации критических секций
Блокировка (lock, mutex)
Блокировка (lock, mutex)
Решение задачи доступа к ресурсу
Решение задачи доступа к ресурсу
Семафор
Семафор
Барьер
Барьер
Монитор
Монитор
Решение классических задач параллельного программирования
Решение классических задач параллельного программирования
Производитель-потребитель
Производитель-потребитель
Задания-работники
Задания-работники
Задача об обедающих философах
Задача об обедающих философах
Задача о читателях и писателях (1)
Задача о читателях и писателях (1)
Задача о читателях и писателях (2)
Задача о читателях и писателях (2)
Задача о читателях и писателях (3)
Задача о читателях и писателях (3)
Задача о читателях и писателях
Задача о читателях и писателях
Задача о читателях и писателях
Задача о читателях и писателях
Задача о читателях и писателях
Задача о читателях и писателях
Заключение
Заключение
Ссылки
Ссылки
Вопросы
Вопросы
Картинки из презентации «Операция в программировании» к уроку информатики на тему «Программирование»

Автор: Geo. Чтобы познакомиться с картинкой полного размера, нажмите на её эскиз. Чтобы можно было использовать все картинки для урока информатики, скачайте бесплатно презентацию «Операция в программировании.ppt» со всеми картинками в zip-архиве размером 235 КБ.

Скачать презентацию

Операция в программировании

содержание презентации «Операция в программировании.ppt»
Сл Текст Сл Текст
1Многопоточное программирование. Java Advanced. 25Решение задачи доступа к ресурсу. // Получение доступа к
2Краткое содержание. Введение Классические задачи ресурсу while(!v.compareAndSet(0, 1)); // Действия с ресурсом //
многопоточного программирования Атомарные операции Примитивы Освобождение ресурса v.set(0);
синхронизации Решения задач многопоточного программирования 26Примитивы синхронизации. Часть 4.
Заключение. 27Критическая секция. Только один поток может выполнять
3Введение. Часть 1. действия в критической секции Именованные критические секции
4Многопоточное программирование. Программа одновременно имеет < name: statements >
несколько потоков исполнения Потоки должны взаимодействовать 28Решение задачи доступа к ресурсу. Доступ производится в
(синхронизироваться) друг с другом. критической секции resource < resource: // Доступ к ресурсу
5Пример. Умножение матриц. // Матрицы размера n на n >
double[][] a, b, c; for (int i = 0; i < n; i++) { for (int j 29Реализации критических секций. На основе блокировки ?
= 0; j < n; j++) { c[i][j] = 0; for (int k = 0; k < n; await(!lock) lock = true; ? // Вход // Критическая секция lock =
k++) { c[i][j] += a[i][k] * b[k][j]; } } }. false; // Выход На основе атомарных операций
6Пример. Итеративный параллелизм. // Матрицы размера n на n while(!lock.compareAndSet(0, 1)); // Вход // Критическая секция
double[][] a, b, c; for (int i = 0; i < n; i++) { // lock.set(0); // Выход.
Параллельно for (int j = 0; j < n; j++) { // Параллельно 30Блокировка (lock, mutex). Только один поток может владеть
c[i][j] = 0; for (int k = 0; k < n; k++) { c[i][j] += a[i][k] блокировкой Могут быть использованы для передачи событий
* b[k][j]; } } }. Операции lock получить блокировку unlock отдать блокировку
7Пример. Обмен сообщениями (1). Рабочий поток Worker[i] { tryLock попробовать получить блокировку.
double[] a; // a[i][*] double[][] b; // b[*][*] double[] c; // 31Решение задачи доступа к ресурсу. Доступ ограничен
c[i][*] receive a, b from coordinator; for (int j = 0; j < n; блокировкой lock // Получение блокировки lock.lock(); // Доступ
j++) { c[j] = 0; for (int k = 0; k < n; k++) { c[j] += a[k] * к ресурсу // Освобождение блокировки lock.unlock().
b[k][j]; } } send c to coordinator; }. 32Семафор. Хранит количество разрешений на вход Могут быть
8Пример. Обмен сообщениями (2). Управляющий поток использованы для передачи событий Операции acquire получить
coordinator(int i) { double[][] a, b, c; for (int i = 0; i < разрешение release добавить разрешение tryAcquire попробовать
n; i++) { send a[i], b to worker[i]; } for (int i = 0; i < n; получить разрешение.
i++) { receive c[i] from worker[i]; } }. 33Барьер. Потоки блокируются пока все потоки не прибудут к
9Пример. Обмен сообщениями (3). worker[i] { double[] a; // барьеру Одноразовый Многоразовый Операции arrive прибытие к
a[i][*] double[] b; // b[*][i] double[] c; // a[i][*] receive a, барьеру.
b from coordinator; for (int j = 0; j < n; j++) { double s = 34Монитор. Разделяемые переменные инкапсулированы в мониторе
0; for (int k = 0; k < n; k++) { s += a[k] * b[k]; } c[(i + Код в мониторе исполняется не более чем одним потоком Условия
j) % n] = s; send b to worker[(i + 1) % n]; receive b from Операции с условиями wait ожидание условия notify сообщение об
worker[(i + n - 1) % n]; } send c to coordinator; }. условии одному потоку notifyAll сообщение об условии всем
10Пример. Вычисление интеграла. Адаптивное вычисление потокам.
интеграла f(x) double integrate(double l, double r) { if 35Решение классических задач параллельного программирования.
(abs(area(l, m) + area(m, r) - area(l, r)) > EPS) { return Часть 5.
integrate(l, m) + integrate(m, r); } else { return area(l, m) + 36Производитель-потребитель. Решение с помощью разделенных
area(m, r); } } double area(double l, double r) { return (f(l) + блокировок Производитель empty.lock(); // копирование
f(r)) * (r - l) / 2; }. full.unlock(); Потребитель full.lock(); // копирование
11Пример. Рекурсивный параллелизм. Адаптивное вычисление empty.unlock();
интеграла f(x) double integrate(double l, double r) { double m = 37Задания-работники. Решение с помощью монитора Задание
(l + r) / 2; double la = area(l, m); double ra = aread(m, r); if queue.add(task); queue.notify(); task.wait(); Работник while
(abs(la + ra - area(l, r)) > EPS) { la = integrate(l, m); // (queue.isEmpty()) queue.wait(); Task t = queue.get(); //
Параллельно ra = integrate(m, r); // Параллельно } return la + Обработка задания t.notify();
ra; }. 38Задача об обедающих философах. Решение с помощью асимметрии
12Основные операции. Создание потока Уничтожение потока Все философы кроме одного берут сначала левую, затем правую
Неделимая операция ?statements? Неделимая операция с ожиданием вилку Оставшийся философ берет сначала правую, затем левую
условия ?await(C) statements? вилку.
13Пример. Поиск максимума (1). Без синхронизации int max = 0; 39Задача о читателях и писателях (1). Решение с помощью
create worker[i] { if (max < a[i]) max = a[i]; } С блокировки Читатель ? if (nr++ == 0) busy.lock(); ? // Чтение ?
синхронизацией int max = 0; create worker[i] { ?if (max < if (--nr == 0) busy.unlock(); ? Писатель busy.lock(); // Запись
a[i]) max = a[i];? }. busy.unlock();
14Пример. Поиск максимума (2). Протокол 40Задача о читателях и писателях (2). Решение с помощью
Проверить-Проверить-Установить int max = 0; create worker[i] { передачи эстафеты Особенности решения Если есть и писатели и
if (max < a[i]) { ? if (max < a[i]) max = a[i]; ? } }. читатели, то вход закрывается Пока есть читатели – разрешать
15Свойства планирования. Справедливость Безусловная Слабая чтение Когда нет читателей – разрешить запись Когда нет ни
Сильная Безопасность Живучесть. читателей ни писателей – открыть вход.
16Классические задачи многопоточного программирования. Часть 41Задача о читателях и писателях (3).
2. 42Задача о читателях и писателях. Передача эстафеты if (nw ==
17Задача доступа к общему ресурсу. Несколько потоков 0 && dr > 0) { dr--; r.unlock(); // Возобновить
обращаются к общему ресурсу. процесс-читатель else if (nr == 0 && nw == 0 &&
18Производитель-потребитель. Один поток производит данные, dw > 0) { dw--; w.unlock(); // Возобновить процесс-писатель }
второй их потребляет Несколько потоков производят данные и else { e.unlock(); // Открыть вход }.
несколько их потребляют Данные могут храниться в очереди. 43Задача о читателях и писателях. Читатель e.lock(); if (nw
19Задача о читателях и писателях. Читать могут много потоков > 0) { dr++; e.unlock(); r.lock(); } // Доступ разрешен nr++;
одновременно Писать может только один поток Читать во время // Передача эстафеты // Чтение e.lock(); nr--; // Передача
записи нельзя. эстафеты.
20Задача об обедающих философах. 5 Философов, 5 тарелок, 5 44Задача о читателях и писателях. Писатель e.lock(); if (nw
вилок Философ Думает Ест Что бы есть нужны обе вилки. > 0 || nr > 0) { dw++; e.unlock(); w.lock(); } nw++; //
21Задания-работники. Поток-клиент ждет выполнения задания Передача эстафеты // Запись e.lock(); nw--; // Передача
потоком-сервером. эстафеты.
22Атомарные операции. Часть 3. 45Заключение. Часть 6.
23Атомарная операция. Операция выполняемая как единое целое 46Ссылки. Эндрюс Г. Основы многопоточного, параллельного и
Чтение Запись Неатомарные операции Инкремент Декремент. распределенного программирования Lea D. Concurrent Programming
24Виды атомарных операций. Операция чтения get Операция записи in Java.
set Операции записи и чтения addAndGet, incAndGet, … getAndAdd, 47Вопросы.
getAndInc, … Операция условной записи compareAndSet.
«Операция в программировании» | Операция в программировании.ppt
http://900igr.net/kartinki/informatika/Operatsija-v-programmirovanii/Operatsija-v-programmirovanii.html
cсылка на страницу

Программирование

другие презентации о программировании

«Гиперссылки» - Гиперссылки. Гиперссылка на звук: <A href=“sound.wav”>звук</A>. <A href=“адрес перехода”>текст-ссылка</A>. Гиперссылка на изображение: <A href=“picture.jpg”>изображение</A>. Что такое гиперссылка? Гиперссылка на архив: <A href=“Архив.zip”>скачать файл</A>.

«История Паскаль» - 1960. Pascal. 1980. Algol 60 (1960). Prolog. Lisp. Назад. Ada. 1970. Algol 68. Smalltalk. PL/I. Первые сложные многоцелевые вычислительные устройства появились еще в XIX веке. Урок – семинар. Miranda. История создания и развития языка Паскаль. Cobol.

«Язык HTML» - Видимо история HTML, полная борьбы и противоречий, по-видимому, близится к завершению. Каждый тег имеет свое название. Тег <IMG SRC> - вставка изображения из файла. Но можно разработать web-сайтов и самим. Структура web-документа. Все было приведено к логической и структурной разметке текста. На самом деле одной строкой дело не обходится.

«Операция в программировании» - Примитивы синхронизации. Рекурсивный параллелизм. Часть 4. Итеративный параллелизм. Обмен сообщениями (3). Задача о читателях и писателях. Решение задачи доступа к ресурсу. Блокировка (lock, mutex). Доступ производится в критической секции resource < resource: // Доступ к ресурсу >. Задача о читателях и писателях (1).

«Корзина» - Возможные проблемы. Вопросы. При вызове фрагмента мы можем использовать метод render. Как работает метод render? Фрагмент – часть представления, размещённая в собственном файле. Какие возможности предоставляет технология AJAX? Т.о. мы создали AJAX-приложение. Шаг Г2: корзина, использующая технологию AJAX.

«Фоны для оформления» - ! Было опрошено 100 учеников. Провели опрос среди посетителей Internet –ресурсов. Проверка гипотезы. Авторы проекта. Цель проекта: Гипотеза проекта: Просмотрели 56 сайтов общеобразовательных учреждений города Липецка. Ученицы 10ё класса: Иванова, Петрова, Сидорова, Интернетова. Научные руководители проекта: Шеин М.С., Кушникова В.П.

Урок

Информатика

126 тем
Картинки
Презентация: Операция в программировании | Тема: Программирование | Урок: Информатика | Вид: Картинки
900igr.net > Презентации по информатике > Программирование > Операция в программировании.ppt