В каждой операционной системе потоковые решения реализовались по своему и имели свои особенности. Поскольку каждая операционная система имела собственные функции доступа к механизмам потоков, то межплатформенное программирование было большой головной болью для большинства разработчиков. В этой связи, в стандарт POSIX был введен отдельный раздел (POSIX.1c), посвященный именно потоковому программированию. POSIX определяет набор интерфейсных функций, который должен поддерживаться в POSIX-совместимыми операционными системами.

На данный момент, практически все известные ОС поддерживают стандарт POSIX, что упрощает процесс разработки межплатформенного программного обеспечения. В частности, как это не странно звучит, ОС MS Windows, также имеет поддержку POSIX стандартов.

Не является исключением и ОС FreeBSD, которая полностью поддерживает POSIX-потоки. Интерфейс потоковых функций описан в файле заголовков pthread.h и соотвествует стандарту POSIX.1с. Потоковые POSIX функции делятся на несколько групп:

  • потоковые процедуры;
  • процедуры свойств объектов;
  • семафорные (mutex) процедуры;
  • процедуры состояния переменных;
  • процедуры блокировки на чтение/запись;
  • процедуры потокового контекста;
  • процедуры очистки.

На данный момент реализация на FreeBSD POSIX-потоков встроена в три системные библиотеки:

  • Reentrant C-библиотека (libc_r, -lc_r);
  • библиотека потоков POSIX (libpthread, -lpthread);
  • 1:1 библиотека потоков (libthr, -lthr).

Все библиотеки содержат и безопасные (thread-safe) версии функций стандартной C библиотеки (libc, -lc), и потоковые функции. Потоковые приложения должны собираться с одной из этих библиотек. Надо заметить, что по умолчанию, большинство приложений собираются с libpthread библиотекой. Что часто является не лучшим с точки зрения производительности решением.

Нет комментариев

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *