Содержание

Обзор

Введение

Boost.Thread позволяет С++ программистам реализовывать различные, асинхронные, независимые потоки выполнения. Каждый поток имеет свои собственные машинные состояния, включая счетчик программных инструкций и регистры. Программы которые реализованные как различные потоки называют многопоточные программы, что бы отличать их от традиционных однопоточных программ. Глоссарий дает более полное описание многопоточной среды выполнения.

Многопоточность дает некоторые преимуществa:

Предупреждения

Основной анализ

Кроме ошибок, которые могут быть в однопоточной программе, многопоточные программы могут содержать дополнительные ошибки:

Каждая многопоточная программа должна проектироваться аккуратно, что бы избежать этих ошибок. Это не редкие и не экзотические ошибки - они фактически гарантировано появятся, пока код не будет спроектирован должным образом. Проблема приоритетов(Priority failures) бывает реже - но она не менее серьезная.

Boost.Thread спроектирован так, что бы попытаться минимизировать эти ошибки, но они все равно будут, пока программист сам не позаботится о их удалении.

см. также Заметки реализации(Implementation Notes) для дополнительного, реализация-зависимого анализа

Взгляд на тестирование и отладку

Многопоточные программы недетерминированные. Другими словами, одна и та же программа с одними и теми же входными данными может исполняться каждый раз по разному. Это может сделать тестирование и отладку страшно сложными:

Начало работы

Несмотря на то, что могло показаться, что многопоточные программы посути своей ненадежны, существует много надежных многопоточных программ. Известны многопоточные техники, которые делаю программы надежными.

Паттерны проектирования для надежных многопоточных программ, включая важный паттерн монитор, представлены в Design patterns for reliable multithreaded programs, including the important monitor pattern, are presented in Pattern-Oriented Software Architecture Volume 2 - Patterns for Concurrent and Networked Objects [SchmidtStalRohnertBuschmann]. Many important multithreading programming considerations (independent of threading library) are discussed in Programming with POSIX Threads [Butenhof97].

Doing some reading before attempting multithreaded designs will give you a head start toward reliable multithreaded programs.

Использование стандартной библиотеки C++ в многопоточных программах

Общие гарантии для всех компонент Boost.Thread