Поддержка параллелизма и многопоточности в языках программирования и библиотеках не является чем-то новым, хотя включение ее в стандарт С++ — действительно новшество. Например, в Java многопоточность поддерживалась уже в самой первой версии; на платформах, согласованных со стандартом POSIX, имеется интерфейс из языка С к средствам многопоточности, предоставляемым операционной системой, а язык Erlang поддерживает параллелизм на основе передачи сообщений. Существуют даже библиотеки классов для С++, например Boost, которые обертывают программный интерфейс к средствам многопоточности, существующим на данной платформе (будь то интерфейс POSIX С или нечто иное) и тем самым предоставляют переносимый интерфейс для всех поддерживаемых платформ.
Для тех, кто уже имеет опыт написания многопоточных приложений и хотел бы воспользоваться им для разработки программ на С++ с применением новых возможностей, в этом приложении проводится сравнение средств, имеющихся в Java, POSIX С, С++ с библиотекой Boost Thread Library и С++11. Даются также перекрестные ссылки на соответствующие главы этой книги.
Средство | Java | Posix C | Boost Threads | C++11 | Глава |
---|---|---|---|---|---|
Запуск потоков | Класс
|
Тип и соответствующие функции API: , ,
|
Класс и его функции-члены |
Класс и его функции-члены |
Глава 2 |
Взаимное исключение | Блоки
|
Тип и соответствующие функции API: , и другие |
Класс и его функции-члены, шаблоны и
|
Класс и его функции-члены, шаблоны и
|
Глава 3 |
Ожидание предиката | Методы и класса , используемые внутри блоков
|
Тип и соответствующие функции API: , и другие |
Классы и и их функции-члены |
Классы и и их функции-члены |
Глава 4 |
Атомарные операции и модель памяти с учетом параллелизма | -переменные, типы в пакете
|
Отсутствует | Отсутствует | Типы , шаблон класса , функция
|
Глава 5 |
Потокобезопасные контейнеры | Контейнеры в пакете . |
Отсутствует | Отсутствует | Отсутствует | Главы 6 и 7 |
Будущие результаты | Интерфейс и ассоциированные с ним классы |
Отсутствует | Шаблонные классы и
|
Шаблонные классы , , и
|
Глава 9 |
Пулы потоков | Класс
|
Отсутствует | Отсутствует | Отсутствует | Глава 9 |
Прерывание потока | Метод класса
|
|
Функция-член класса
|
Отсутствует |