Средства программирования для многопроцессорных вычислительных систем. Немнюгин C.А. - 16 стр.

UptoLike

Составители: 

16
Рис. 12.
Децентрализованная
схема
Многопоточные программы
Поток
(
нить
)
представляет
собой
последовательный
поток
управления
(
последовательность
команд
)
в
рамках
одной
программы
.
При
создании
процесса
порождается
главный
поток
,
выполняющий
инициализацию
процесса
.
Он
же
начинает
выполнение
команд
.
Поток
и
процесс
соотносятся
следующим
образом
:
процесс
имеет
главный
поток
,
инициализирующий
выполнение
команд
процесса
;
любой
поток
может
порождать
в
рамках
одного
процесса
другие
потоки
;
каждый
поток
имеет
собственный
стек
;
потоки
,
соответствующие
одному
процессу
,
имеют
общие
сегменты
кода
и
данных
.
При
разработке
многопоточных
приложений
возникают
те
же
проблемы
,
что
и
при
разработке
параллельных
.
Это
:
гонки
за
данными
;
блокировки
;
активные
блокировки
;
несбалансированность
загрузки
.
Гонки за данными
Гонки
за
данными
являются
следствием
зависимостей
,
когда
несколько
потоков
модифицируют
содержимое
одной
и
той
же
области
памяти
.
Наличие
гонок
за
данными
не
всегда
является
очевидным
.
Они
могут
приводить
к
конфликтам
двух
типов
:
1.
конфликт
«
чтение
-
запись
»;
2.
конфликт
«
запись
-
запись
».
Имеются
два
способа
борьбы
с
гонками
за
данными
: