воскресенье, 12 июня 2011 г.

Библиотека Boost.Threads

Всего несколько лет назад программы, написанные
с использованием нескольких потоков выполнения,
встречались довольно редко. Сегодня же приложения
Интернет-серверов запускают множество потоков вы-
полнения, чтобы эффективно обслужить множество
соединений с клиентами. В целях максимизации про-
пускной способности серверы транзакций выполняют
свои сервисы в отдельных потоках. Графические при-
ложения производят длительные операции в отдель-
ном потоке, продолжая чутко реагировать на действия
пользователя. Этот список можно продолжать и даль-
ше.
Стандарт С++ потоки не упоминает, заставляя про-
граммистов интересоваться вопросом, возможно ли
вообще писать многопоточные C++-программы. Хотя
невозможно написать соответствующие стандарту
многопоточные программы, программисты, тем не
менее, пишут программы на C++, используя библиоте-
ки, предоставляемые их операционными системами и
обеспечивающие системную поддержку потоков. Од-
нако при таком подходе возникает как минимум две
основные проблемы: эти библиотеки почти всегда яв-
ляются C-библиотеками и требуют осторожного ис-
пользования в C++, а кроме того каждая операционная
система обеспечивает свой собственный набор биб-
лиотек для поддержки многопоточности. Таким обра-
зом, получаемый код оказывается не только нестан-
дартным, но также и непереносимым 1 . Boost.Threads
— это библиотека, предназначаемая для решения обе-
их этих проблем.
Boost 2 — это организация, основанная членами ра-
бочей группы комитета по стандартизации C++ с це-
лью разработки новых библиотек для C++. В настоя-
щее время в организацию входят приблизительно 2000
членов. Множество библиотек можно найти в дистри-
бутиве Boost 3 . Чтобы сделать эти библиотеки безопас-
ными относительно потоков и была создана библиоте-
ка Boost.Threads.
Многие эксперты C++ внесли свой вклад в дизайн
Boost.Threads. Интерфейс библиотеки был спроекти-
рован с чистого листа и не является простой оберткой
какого-либо многопоточного API для C. Многие воз-
можности C++ (такие как существование конструкто-
ров и деструкторов, функциональных объектов и шаб-
лонов) были в полной мере использованы с целью соз-
дания более гибкого интерфейса. Текущая реализация
работает на платформах POSIX, Win32 и Macintosh
Carbon.

  1. Стандарт POSIX определяет поддержку многопоточ- ности в библиотеке, известной как PTHREADS. Она
    поддерживает многопоточность для широкого диапа-
    зона операционных систем, включая Win32 посредст-
    вом порта pthreads-win32. Однако, это C-библиотека,
    она не реализует некоторые концепции C++, она не-
    доступна на некоторых платформах.

  2. Посетите сайт Boost: http://www.boost.org

  3. См. статью Бьорна Карлссона «Умные указатели в
    Boost» в C/C++ Users Journal, опубликованную в апре-
    ле 2002 года.

1 комментарий:

  1. Потоки - это здорово для системного программирования. Для прикладных задач лучше работать с акторами > http://theron-library.com

    ОтветитьУдалить