Главная » Все файлы » Просмотр файлов из архивов » PDF-файлы » Потоковая безопасность (презентация)

Потоковая безопасность (презентация), страница 2

PDF-файл Потоковая безопасность (презентация), страница 2 Параллельные системы и параллельные вычисления (5742): Лекции - 9 семестр (1 семестр магистратуры)Потоковая безопасность (презентация): Параллельные системы и параллельные вычисления - PDF, страница 2 (5742) - СтудИзба2015-08-23СтудИзба

Описание файла

PDF-файл из архива "Потоковая безопасность (презентация)", который расположен в категории "". Всё это находится в предмете "параллельные системы и параллельные вычисления" из 9 семестр (1 семестр магистратуры), которые можно найти в файловом архиве НИУ «МЭИ» . Не смотря на прямую связь этого архива с НИУ «МЭИ» , его также можно найти и в других разделах. .

Просмотр PDF-файла онлайн

Текст 2 страницы из PDF

. .}private:Callable(const Callable &);};// . . .thread1.join();// . . .}Лекция 822 / 55НачалоИспользование многопоточностиБиблиотеки многопоточностиСпособы обеспечения безопасности потоковПотокиМьютексыБлокировкиУсловные переменные, барьерыПотоки с некопируемыми параметрамиПримерПример (окончание)struct Callable{Callable() {}void operator () (int &rn)int main(){// . . .int n = 10;boost::thread thread2({// .

. .boost::ref(callable),n);thread2.join();cout << "n == " << n << endl;++ rn;}private:Callable(const Callable &);};Лекция 8// . . .}23 / 55НачалоИспользование многопоточностиБиблиотеки многопоточностиСпособы обеспечения безопасности потоковПотокиМьютексыБлокировкиУсловные переменные, барьерыПотоки с некопируемыми параметрамиПримерПример (окончание)struct Callable{Callable() {}void operator () (int &rn)int main(){// . .

.int n = 10;boost::thread thread2({// . . .boost::ref(callable),boost::ref(n));thread2.join();cout << "n == " << n << endl;++ rn;}private:Callable(const Callable &);};Лекция 8// . . .}23 / 55НачалоИспользование многопоточностиБиблиотеки многопоточностиСпособы обеспечения безопасности потоковПотокиМьютексыБлокировкиУсловные переменные, барьерыПередача локальных буферов в потокиПример (функция потока)Пример (вызов)struct Callable{void operator () (const std::string &rcStr){boost::this_thread::sleep(void call(int n){char szBuf[1024];std::sprintf(szBuf, "%d", n);boost::thread thread(boost::posix_time::milliseconds(500));std::cout << rcStr << std::endl;}};Callable(), szBuf);thread.detach();}Лекция 824 / 55НачалоИспользование многопоточностиБиблиотеки многопоточностиСпособы обеспечения безопасности потоковПотокиМьютексыБлокировкиУсловные переменные, барьерыПередача локальных буферов в потокиПример (функция потока)Пример (вызов)struct Callable{void operator () (const std::string &rcStr){boost::this_thread::sleep(void call(int n){char szBuf[1024];std::sprintf(szBuf, "%d", n);std::string s(szBuf);boost::posix_time::milliseconds(500));std::cout << rcStr << std::endl;}};boost::thread thread(Callable(), s);thread.detach();}Лекция 824 / 55НачалоИспользование многопоточностиБиблиотеки многопоточностиСпособы обеспечения безопасности потоковПотокиМьютексыБлокировкиУсловные переменные, барьерыПрерывание потоковПримерint main(){// .

. .boost::thread thread3(thread_func2);// . . .thread3.interrupt();}Лекция 825 / 55НачалоИспользование многопоточностиБиблиотеки многопоточностиСпособы обеспечения безопасности потоковПотокиМьютексыБлокировкиУсловные переменные, барьерыПредопределённые точки прерыванияВызовы функцийboost::thread::join()boost::thread::timed_join()boost::condition_variable::wait()boost::condition_variable::timed_wait()boost::condition_variable_any::wait()boost::condition_variable_any::timed_wait()boost::thread::sleep()boost::this_thread::sleep()boost::this_thread::interruption_point()Лекция 826 / 55НачалоИспользование многопоточностиБиблиотеки многопоточностиСпособы обеспечения безопасности потоковПотокиМьютексыБлокировкиУсловные переменные, барьерыПотоки с непрерываемыми участкамиПримерvoid thread_func0(){// .

. .try{// . . .}catch (const boost::thread_interrupted &){// . . .}// . . .}Лекция 827 / 55НачалоИспользование многопоточностиБиблиотеки многопоточностиСпособы обеспечения безопасности потоковПотокиМьютексыБлокировкиУсловные переменные, барьерыПотоки с непрерываемыми участкамиПримерvoid thread_func1(){// . . .{boost::this_thread::disable_interruption di;// . . .{boost::this_thread::disable_interruption di2;// . . .}// .

. .}// . . .Лекция 827 / 55НачалоИспользование многопоточностиБиблиотеки многопоточностиСпособы обеспечения безопасности потоковПотокиМьютексыБлокировкиУсловные переменные, барьерыПотоки с непрерываемыми участкамиПримерvoid thread_func2(){// . . .{boost::this_thread::disable_interruption di;// . . .{boost::this_thread::restore_interruption ri(di);// .

. .}// . . .}// . . .Лекция 827 / 55НачалоИспользование многопоточностиБиблиотеки многопоточностиСпособы обеспечения безопасности потоковПотокиМьютексыБлокировкиУсловные переменные, барьерыИспользование библиотеки мьютексовПример (Boost)#include <boost/thread/mutex.hpp>using namespace boost;Пример (C ++0x)#include <mutex>using namespace std;Лекция 828 / 55НачалоИспользование многопоточностиБиблиотеки многопоточностиСпособы обеспечения безопасности потоковПотокиМьютексыБлокировкиУсловные переменные, барьерыКлассы mutex и recursive_mutexМетоды (владение, блокировка)native_handle_type native_handle();void lock();bool try_lock();void unlock();Лекция 829 / 55НачалоИспользование многопоточностиБиблиотеки многопоточностиСпособы обеспечения безопасности потоковПотокиМьютексыБлокировкиУсловные переменные, барьерыКлассы timed_mutex и recursive_timed_mutexМетоды (владение, блокировка)native_handle_type native_handle();void lock(); bool try_lock(); void unlock();bool timed_lock(system_time const &rcAbsTime);(Boost)template <typename TimeDuration>bool timed_lock(TimeDuration const &rcRelTime);(Boost)template <class Rep, class Period>bool try_lock_for(const chrono::duration <Rep, Period> &rcRelTime);(C ++0x)template <class Clock, class Duration>bool try_lock_until(const chrono::time_point <Clock, Duration> &rcAbsTime);Лекция 8(C ++0x)30 / 55НачалоИспользование многопоточностиБиблиотеки многопоточностиСпособы обеспечения безопасности потоковПотокиМьютексыБлокировкиУсловные переменные, барьерыИспользование библиотеки блокировокПример (Boost)#include <boost/thread/locks.hpp>using namespace boost;Пример (C ++0x)#include <mutex>using namespace std;Лекция 831 / 55НачалоИспользование многопоточностиБиблиотеки многопоточностиСпособы обеспечения безопасности потоковПотокиМьютексыБлокировкиУсловные переменные, барьерыОпределение lock_guardC ++0xtemplate <class Mutex> class lock_guard{public:typedef Mutex mutex_type;explicit lock_guard(mutex_type &);lock_guard(mutex_type &, adopt_lock_t);~lock_guard();lock_guard(lock_guard const &) = delete;lock_guard &operator = (lock_guard const &) = delete;private:mutex_type &r_Mutex;};Лекция 8// C ++0x// C ++0x32 / 55НачалоИспользование многопоточностиБиблиотеки многопоточностиСпособы обеспечения безопасности потоковПотокиМьютексыБлокировкиУсловные переменные, барьерыИспользование блокировокПримерПример (окончание)class Collection{void Collection::add_value(const Data &rcData){lock_guard <mutex> lock(m_Mutex);m_Vector.push_back(rcData);}// .

. .private:MyVector m_Vector;mutex m_Mutex;};Лекция 833 / 55НачалоИспользование многопоточностиБиблиотеки многопоточностиСпособы обеспечения безопасности потоковПотокиМьютексыБлокировкиУсловные переменные, барьерыОбщие алгоритмы блокировкиАлгоритмыtemplate <class L1, class L2, class ...

L3>int try_lock(L1 &, L2 &, L3 & ...);(-1, 0, 1, . . . ) (C ++0x)template <class L1, class L2, class ... L3>void lock(L1 &, L2 &, L3 & ...); (C ++0x)Лекция 834 / 55НачалоИспользование многопоточностиБиблиотеки многопоточностиСпособы обеспечения безопасности потоковПотокиМьютексыБлокировкиУсловные переменные, барьерыИспользование нескольких блокировокПример (блокировка двух объектов)bool operator < (const X &rcX1, const X &rcX2){if (&rcX1 == &rcX2)return false;//lock_guard <mutex> lock1(rcX1.m_Mutex);lock_guard <mutex> lock2(rcX2.m_Mutex);//return some_compare(rcX1, rcX2);}Лекция 835 / 55НачалоИспользование многопоточностиБиблиотеки многопоточностиСпособы обеспечения безопасности потоковПотокиМьютексыБлокировкиУсловные переменные, барьерыИспользование нескольких блокировокПример (блокировка двух объектов)bool operator < (const X &rcX1, const X &rcX2){if (&rcX1 == &rcX2)return false;//lock(rcX1.m_Mutex, rcX2.m_Mutex);lock_guard <mutex> lock1(rcX1.m_Mutex, adopt_lock);lock_guard <mutex> lock2(rcX2.m_Mutex, adopt_lock);//return some_compare(rcX1, rcX2);}Лекция 835 / 55НачалоИспользование многопоточностиБиблиотеки многопоточностиСпособы обеспечения безопасности потоковПотокиМьютексыБлокировкиУсловные переменные, барьерыКласс unique_lockМетоды (создание)unique_lock();explicit unique_lock(mutex_type &);unique_lock(mutex_type &, adopt_lock_t);unique_lock(mutex_type &, defer_lock_t);unique_lock(mutex_type &, try_to_lock_t);Лекция 836 / 55НачалоИспользование многопоточностиБиблиотеки многопоточностиСпособы обеспечения безопасности потоковПотокиМьютексыБлокировкиУсловные переменные, барьерыИспользование нескольких блокировок (unique_lock)Пример (блокировка двух объектов)bool operator < (const X &rcX1, const X &rcX2){if (&rcX1 == &rcX2)return false;//unique_lock <mutex> lock1(rcX1.m_Mutex, defer_lock);unique_lock <mutex> lock2(rcX2.m_Mutex, defer_lock);lock(rcX1.m_Mutex, rcX2.m_Mutex);//return some_compare(rcX1, rcX2);}Лекция 837 / 55НачалоИспользование многопоточностиБиблиотеки многопоточностиСпособы обеспечения безопасности потоковПотокиМьютексыБлокировкиУсловные переменные, барьерыКласс unique_lock (продолжение)Методы (создание, перемещение)unique_lock(mutex_type &, system_time const &);(Boost)template <class Rep, class Period>unique_lock(mutex_type &, const chrono::duration <Rep, Period> &);(C ++0x)template <class Clock, class Duration>unique_lock(mutex_type &, const chrono::time_point <Clock, Duration> &);(C ++0x)Семантика перемещенияЛекция 838 / 55НачалоИспользование многопоточностиБиблиотеки многопоточностиСпособы обеспечения безопасности потоковПотокиМьютексыБлокировкиУсловные переменные, барьерыКласс unique_lock (продолжение)Методы (блокировка)void lock();bool try_lock();void unlock();bool timed_lock(system_time const &rcAbsTime);(Boost)template <typename TimeDuration>bool timed_lock(TimeDuration const &rcRelTime);(Boost)template <class Rep, class Period>bool try_lock_for(const chrono::duration <Rep, Period> &rcRelTime);(C ++0x)template <class Clock, class Duration>bool try_lock_until(const chrono::time_point <Clock, Duration> &rcAbsTime);Лекция 8(C ++0x)39 / 55НачалоИспользование многопоточностиБиблиотеки многопоточностиСпособы обеспечения безопасности потоковПотокиМьютексыБлокировкиУсловные переменные, барьерыКласс unique_lock (окончание)Методы (проверка состояния, освобождение)bool owns_lock() const;operator unspecified_bool_type() const;bool operator ! () const;(Boost)(Boost)explicit operator bool () const;(C ++0x)mutex_type *mutex() const;mutex_type *release();Лекция 840 / 55НачалоИспользование многопоточностиБиблиотеки многопоточностиСпособы обеспечения безопасности потоковПотокиМьютексыБлокировкиУсловные переменные, барьерыКласс boost::shared_mutexМетоды (разделяемая блокировка)Все методы boost::mutexvoid lock_shared();bool try_lock_shared();bool timed_lock_shared(system_time const &);void unlock_shared();void lock_upgrade();void unlock_upgrade();void unlock_upgrade_and_lock();void unlock_and_lock_upgrade();void unlock_and_lock_shared();void unlock_upgrade_and_lock_shared();Лекция 841 / 55НачалоИспользование многопоточностиБиблиотеки многопоточностиСпособы обеспечения безопасности потоковПотокиМьютексыБлокировкиУсловные переменные, барьерыКласс boost::shared_lockМетоды (разделяемая блокировка)Все методы boost::unique_lockvoid lock();(вызывает m_pMutex->lock_shared();)и т.

Свежие статьи
Популярно сейчас
Почему делать на заказ в разы дороже, чем купить готовую учебную работу на СтудИзбе? Наши учебные работы продаются каждый год, тогда как большинство заказов выполняются с нуля. Найдите подходящий учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
5302
Авторов
на СтудИзбе
416
Средний доход
с одного платного файла
Обучение Подробнее