Вход/Регистрация
Параллельное и распределенное программирование на С++
вернуться

Хьюз Камерон

Шрифт:

_SC_THREAD_STACK_ MIN

PTHREAD_STACK_MIN

Минимальный размер стека потока в байтах

_SC_THREAD_THREADS_MAX

PTHREAD_THREADS MAX

Максимальное количество потоков на процесс

_SC_THREAD_KEYS_MAX

PTHREAD_KEYS_MAX

Максимальное количество ключей на процесс

_SC_THREAD_PRIO_INHERIT

_POSIX_THREAD_PRIO_ INHERIT

Поддерживает опцию наследования приоритета

_SC_THREAD_PRIO

_POSIX THREAD_PRIO

Поддерживает опцию приоритета потока

_SC_THREAD_PRIORITY_ SCHEDULING

_POSIX_THREAD_PRIORITY_SCHEDULING

Поддерживает опцию планирования приоритета потока

_SC_THREAD_PROCESS_SHARED

_POSIX_THREAD_PROCESS_SHARED

Поддерживает синхронизацию на уровне процесса

_SC_THREAD_SAFE_ FUNCTIONS

_POSIX_THREAD_SAFE_FUNCTIONS

Поддерживает функции безопасности потока

_SC_THREAD_ DESTRUCTOR_ ITERATIONS

_PTHREAD_THREAD_DESTRUCTOR_ITERATIONS

Определяет количество попыток, направленных на разрушение потоковых данных при завершении потока

_SC_CHILD_MAX

CHILD_MAX

Максимальное количество процессов, разрешенных для UID

_SC_PRIORITY_ SCHEDULING

_POSIX_PRIORITY_ SCHEDULING

Поддерживает планирование процессов

_SC_REALTIME_ SIGNALS

_POSIX_REALTIME_SIGNALS

Поддерживает сигналы реального времени

_SC_XOPEN_REALTIME_THREADS

_XOPEN_REALTIME_ THREADS

Поддерживает группу потоковых средств реального времени X/Open POSIX

_SC_STREAM_MAX

STREAM_MAX

Определяет количество потоков данных, которые один процесс может открыть одновременно

_SC_SEMAPHORES

_POSIX_SEMAPHORES

Поддерживает семафоры

_SC_SEM_NSEMS_MAX

SEM_NSEMS_MAX

Определяет максимальное количество семафоров, которое может иметь процесс

_SC_SEM_VALUE_MAX

SEM_VALUE_MAX

Определяет максимальное значение, которое может иметь семафор

_SC_SHARED_MEMORY_ OBJECTS

_POSIX_SHARED_MEMORY_OBJECTS

Поддерживает объекты общей памяти

Управление критическими разделами

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

Если существуют процессы или потоки, которые получают доступ к разделяемым модифицируемым данным, структурам данных или переменным, то все эти данные находятся в критической области (или разделе) кода процессов или потоков. Критический раздел кода — это та его часть, в которой обеспечивается доступ потока или процесса к разделяемому блоку модифицируемой памяти и обработка соответствующих данных. Отнесение раздела кода к критическому можно использовать для управления состоянием «гонок». Например, создаваемые в программе два потока, поток А и поток В, используются для поиска нескольких ключевых слов во всех файлах системы. Поток А просматривает текстовые файлы в каждом каталоге и записывает нужные пути в списочную структуру данных TextFiles, а затем инкрементирует переменную FileCount. Поток В выделяет имена файлов из списка TextFiles, декрементирует переменную FileCount, после чего просматривает файл на предмет поиска в нем заданных ключевых слов. Файл, который их содержит, переписывается в другой файл, и инкрементируется еще одна переменная FoundCount. К переменной FoundCount поток А доступа не имеет. Потоки А и В могут выполняться одновременно на отдельных процессорах. Поток А выполняется до тех пор, пока не будут просмотрены все каталоги, в то время как поток В просматривает каждый файл, путь к которому выделен из переменной TextFiles. Упомянутый список поддерживается в отсортированном порядке, и в любой момент его содержимое можно отобразить на экране.

  • Читать дальше
  • 1
  • ...
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

Подпишитесь на рассылку: