Читаем Параллельное программирование на С++ в действии полностью

Поддержка параллелизма и многопоточности в языках программирования и библиотеках не является чем-то новым, хотя включение ее в стандарт С++ — действительно новшество. Например, в Java многопоточность поддерживалась уже в самой первой версии; на платформах, согласованных со стандартом POSIX, имеется интерфейс из языка С к средствам многопоточности, предоставляемым операционной системой, а язык Erlang поддерживает параллелизм на основе передачи сообщений. Существуют даже библиотеки классов для С++, например Boost, которые обертывают программный интерфейс к средствам многопоточности, существующим на данной платформе (будь то интерфейс POSIX С или нечто иное) и тем самым предоставляют переносимый интерфейс для всех поддерживаемых платформ.

Для тех, кто уже имеет опыт написания многопоточных приложений и хотел бы воспользоваться им для разработки программ на С++ с применением новых возможностей, в этом приложении проводится сравнение средств, имеющихся в Java, POSIX С, С++ с библиотекой Boost Thread Library и С++11. Даются также перекрестные ссылки на соответствующие главы этой книги.

СредствоJavaPosix CBoost ThreadsC++11Глава
Запуск потоковКласс java.lang.threadТип pthread_t и соответствующие функции API: pthread_create(), pthread_detach(), pthread_join()Класс boost::thread и его функции-членыКласс std::thread и его функции-членыГлава 2
Взаимное исключениеБлоки synchronizedТип pthread_mutex_t и соответствующие функции API: pthread_mutex_lock(), pthread_mutex_unlock() и другиеКласс boost::mutex и его функции-члены, шаблоны boost::lock_guard<> и boost::unique_lock<>Класс std::mutex и его функции-члены, шаблоны std::lock_guard<> и std::unique_lock<>Глава 3
Ожидание предикатаМетоды wait() и notify() класса java.lang.Object, используемые внутри блоков synchronizedТип pthread_cond_t и соответствующие функции API: pthread_cond_wait(), pthread_cond_timed_wait() и другиеКлассы boost::condition_variable и boost::condition_variable_any и их функции-членыКлассы std::condition_variable и std::condition_variable_any и их функции-членыГлава 4
Атомарные операции и модель памяти с учетом параллелизмаvolatile-переменные, типы в пакете java.util.concurrent.atomicОтсутствуетОтсутствуетТипы std::atomic_xxx, шаблон класса std::atomic<>, функция std::atomic_thread_fence()Глава 5
Потокобезопасные контейнерыКонтейнеры в пакете java.util.concurrent.ОтсутствуетОтсутствуетОтсутствуетГлавы 6 и 7
Будущие результатыИнтерфейс java.util.concurrent.future и ассоциированные с ним классыОтсутствуетШаблонные классы boost::unique_future<> и boost::shared_future<>Шаблонные классы std::future<>, std::shared_future<>, и std::atomic_future<>Глава 9
Пулы потоковКласс java.util.concurrent.ThreadPoolExecutorОтсутствуетОтсутствуетОтсутствуетГлава 9
Прерывание потокаМетод interrupt() класса java.lang.Threadpthread_cancel()Функция-член interrupt() класса boost::threadОтсутствует
<p>Приложение С.</p><p>Каркас передачи сообщений и полный пример программы банкомата</p>

В разделе 4.1 мы познакомились с каркасом передачи сообщений между потоками, продемонстрировав его на примере программы банкомата. В этом приложении приводится полный код примера, включая и код каркаса передачи сообщений.

Перейти на страницу:

Похожие книги

1С: Бухгалтерия 8 с нуля
1С: Бухгалтерия 8 с нуля

Книга содержит полное описание приемов и методов работы с программой 1С:Бухгалтерия 8. Рассматривается автоматизация всех основных участков бухгалтерии: учет наличных и безналичных денежных средств, основных средств и НМА, прихода и расхода товарно-материальных ценностей, зарплаты, производства. Описано, как вводить исходные данные, заполнять справочники и каталоги, работать с первичными документами, проводить их по учету, формировать разнообразные отчеты, выводить данные на печать, настраивать программу и использовать ее сервисные функции. Каждый урок содержит подробное описание рассматриваемой темы с детальным разбором и иллюстрированием всех этапов.Для широкого круга пользователей.

Алексей Анатольевич Гладкий

Программирование, программы, базы данных / Программное обеспечение / Бухучет и аудит / Финансы и бизнес / Книги по IT / Словари и Энциклопедии
1С: Управление торговлей 8.2
1С: Управление торговлей 8.2

Современные торговые предприятия предлагают своим клиентам широчайший ассортимент товаров, который исчисляется тысячами и десятками тысяч наименований. Причем многие позиции могут реализовываться на разных условиях: предоплата, отсрочка платежи, скидка, наценка, объем партии, и т.д. Клиенты зачастую делятся на категории – VIP-клиент, обычный клиент, постоянный клиент, мелкооптовый клиент, и т.д. Товарные позиции могут комплектоваться и разукомплектовываться, многие товары подлежат обязательной сертификации и гигиеническим исследованиям, некондиционные позиции необходимо списывать, на складах периодически должна проводиться инвентаризация, каждая компания должна иметь свою маркетинговую политику и т.д., вообщем – современное торговое предприятие представляет живой организм, находящийся в постоянном движении.Очевидно, что вся эта кипучая деятельность требует автоматизации. Для решения этой задачи существуют специальные программные средства, и в этой книге мы познакомим вам с самым популярным продуктом, предназначенным для автоматизации деятельности торгового предприятия – «1С Управление торговлей», которое реализовано на новейшей технологической платформе версии 1С 8.2.

Алексей Анатольевич Гладкий

Финансы / Программирование, программы, базы данных