Презентация Параллельное программирование. С. Thread Support Library. Atomic Operations Library онлайн
На нашем сайте вы можете скачать и просмотреть онлайн доклад-презентацию на тему Параллельное программирование. С. Thread Support Library. Atomic Operations Library абсолютно бесплатно. Урок-презентация на эту тему содержит всего 53 слайда. Все материалы созданы в программе PowerPoint и имеют формат ppt или же pptx. Материалы и темы для презентаций взяты из открытых источников и загружены их авторами, за качество и достоверность информации в них администрация сайта не отвечает, все права принадлежат их создателям. Если вы нашли то, что искали, отблагодарите авторов - поделитесь ссылкой в социальных сетях, а наш сайт добавьте в закладки.
Презентации » Устройства и комплектующие » Параллельное программирование. С. Thread Support Library. Atomic Operations Library
Оцените!
Оцените презентацию от 1 до 5 баллов!
- Тип файла:ppt / pptx (powerpoint)
- Всего слайдов:53 слайда
- Для класса:1,2,3,4,5,6,7,8,9,10,11
- Размер файла:1.18 MB
- Просмотров:53
- Скачиваний:0
- Автор:неизвестен
Слайды и текст к этой презентации:
№12 слайд
![Методы std thread joinable](/documents_6/7d2763db961acac630a59321074bebae/img11.jpg)
Содержание слайда: Методы std::thread
joinable – можно ли ожидать завершения потока (находимся ли мы в параллельном относительно этого потоке)
get_id – возвращает ID потока
native_handle – возвращает хендл потока (зависит от работающей реализации потоков)
hardware_concurency – сколько потоков одновременно могут работать
№18 слайд
![Где работает асинхронная](/documents_6/7d2763db961acac630a59321074bebae/img17.jpg)
Содержание слайда: Где работает асинхронная операция?
«Ленивое» исполнение в главном потоке
future<T> f1 =
std::async( std::launch::deferred, []() -> T {...} );
Выполнение в отдельном потоке
future<T> f2 = std::async( std::launch::async, []() -> T {...} );
Пусть система решит, она умнее
future<T> f3 = std::async( []() -> T {...} );
№20 слайд
![std shared future Аналог std](/documents_6/7d2763db961acac630a59321074bebae/img19.jpg)
Содержание слайда: std::shared_future
Аналог std::future, но позволяет копировать себя и позволяет ожидать себя нескольким потокам
Например, чтобы можно было протащить future в несколько потоков и ждать его во всех них.
Метод share объекта std::future возвращает эквивалентный std::shared_future
№22 слайд
![std packaged task std](/documents_6/7d2763db961acac630a59321074bebae/img21.jpg)
Содержание слайда: std::packaged_task
std::packaged_task<int(int,int)> task([](int a, int b) { return std::pow(a, b); });
std::future<int> result = task.get_future();
task(2, 9);
std::packaged_task<int(int,int)> task(f);
std::future<int> result = task.get_future();
task();
std::packaged_task<int()> task(std::bind(f, 2, 11));
std::future<int> result = task.get_future();
task();
№24 слайд
![Методы std packaged task](/documents_6/7d2763db961acac630a59321074bebae/img23.jpg)
Содержание слайда: Методы std::packaged_task
valid – возвращает, установлена ли функция
swap – меняет два packaged_task местами
get_future – возвращает объект future
operator () – запускает функцию
reset – сбрасывает результаты вычислений
make_ready_at_thread_exit – запускает функцию, однако результат не будет известен до окончания работы текущего потока
№26 слайд
![std promise void ThreadProc](/documents_6/7d2763db961acac630a59321074bebae/img25.jpg)
Содержание слайда: std::promise
void ThreadProc(std::promise<int>& promise)
{
…
promise.set_value(2)); //-- (3)
…
}
std::promise<int> promise; //-- (1)
std::thread thread(ThreadProc, std::ref(promise)); //-- (2)
std::future<int> result(promise.get_future()); //-- (4)
printf(“thread returns value = %d”, result.get()) //-- (5)
№27 слайд
![Методы std promise operator -](/documents_6/7d2763db961acac630a59321074bebae/img26.jpg)
Содержание слайда: Методы std::promise
operator == - можно копировать
swap – обменять местами
set_value – установить возвращаемое значение
set_value_at_thread_exit – установить возвращаемое значение, но сделать его доступным только когда поток завершится
set_exception – сохранить исключение, которое произошло
set_exception_at_thread_exit – сохранить исключение, но сделать его доступным только после окончания работы потока
№31 слайд
![Другие виды мьютексов std](/documents_6/7d2763db961acac630a59321074bebae/img30.jpg)
Содержание слайда: Другие виды мьютексов
std::timed_mutex – мьютекс, который можно попробовать захватить с ненулевым таймаутом
std::recursive_mutex – мьютекс, который может быть многократно захвачен одним и тем же потоком
std::recursive_timed_mutex – смесь std::timed_mutex и std::recursive_mutex
№33 слайд
![std shared timed mutex C](/documents_6/7d2763db961acac630a59321074bebae/img32.jpg)
Содержание слайда: std::shared_timed_mutex (C++ 14)
Объект, который позволяет эксклюзивно захватывать мьютекс и неэксклюзивно.
Если мьютекс захвачен эксклюзивно, то неэксклюзивно захватить его нельзя (ожидание). Обратное верно.
Неэксклюзивный захват может быть из нескольких потоков одновременно
№41 слайд
![Методы std shared lock std](/documents_6/7d2763db961acac630a59321074bebae/img40.jpg)
Содержание слайда: Методы std::shared_lock / std::unique_lock
swap – обменять примитив синхронизации с другим объектом ?_lock
release – отсоединить текущий примитив синхронизации без unlock
mutex – возвращает ссылку на текущий примитив синхронизации
owns_lock – возвращает true, если управляет примитивом синхронизации
№42 слайд
![Стратегии захвата примитива](/documents_6/7d2763db961acac630a59321074bebae/img41.jpg)
Содержание слайда: Стратегии захвата примитива синхронизации в конструкторе
std::lock_guard<std::mutex> lock1(m1, std::adopt_lock);
std::lock_guard<std::mutex> lock2(m2, std::defer_lock);
std::defer_lock – не захватывать мьютекс
std::try_to_lock – попробовать захватить с нулевым таймаутом
std::adopt_lock – считать, что текущий поток уже захватил мьютекс
№43 слайд
![Событие std condition](/documents_6/7d2763db961acac630a59321074bebae/img42.jpg)
Содержание слайда: Событие: std::condition_variable
notify_one – уведомить о событии 1 поток
notify_all – уведомить о событии все потоки
wait – ждать события
wait_for – ждать события с таймаутом
wait_until – ждать события не дольше, чем до заданного времени
native_handle – вернуть хендл события (зависит от реализации)
№45 слайд
![std atomic lt T gt Шаблонный](/documents_6/7d2763db961acac630a59321074bebae/img44.jpg)
Содержание слайда: std::atomic<T>
Шаблонный тип данных для цифровых переменных (char, short, int, int64, etc) и указателей
Почти всегда lock-free, а если и не lock-free, то не требует написания lock-ов вами.
Главное отличие – гонки данных исключены.
Зато возможные операции крайне ограничены.
№46 слайд
![std atomic operator](/documents_6/7d2763db961acac630a59321074bebae/img45.jpg)
Содержание слайда: std::atomic
operator = приравнивает один атомик другому
is_lock_free – возвращает, является ли реализация для этого типа данных lock free
store – загружает в атомик новое значение
load – получает из атомика значение
exchange – заменяет значение атомика и возвращает прошлое значение
№51 слайд
![Общие впечатления Впервые](/documents_6/7d2763db961acac630a59321074bebae/img50.jpg)
Содержание слайда: Общие впечатления
Впервые потоки, примитивы синхронизации стандартизированы
Некоторые устоявшиеся термины и подходы исключены (семафор; код, возвращаемый потоковой функцией; принудительное завершение потока; thread affinity; размер стека)
Некоторые совсем
Для некоторых непривычные аналоги
Скачать все slide презентации Параллельное программирование. С. Thread Support Library. Atomic Operations Library одним архивом:
Похожие презентации
-
Событийно-ориентированные архитектуры. Программирование с использованием POSIX thread library
-
Параллельное программирование с использованием OpenMP. Лекция 2
-
Параллельное программирование с использованием OpenMP. Лекция 1
-
Модель параллельного программирования. Лекция 2
-
Параллельное программирование. Лекция 1
-
Параллельное программирование с использованием технологии MPI
-
Параллельное программирование в стандарте OpenMP
-
Параллельное программирование. Модель данных в OpenMP
-
Технологии параллельного программирования
-
Введение в MPI. Параллельное программирование