Теория распараллеливания и синхронизация. Демьянович Ю.К - 20 стр.

UptoLike

В простейшем случае такое влияние может непосредственно
передаваться через область памяти, общую для обеих частей про-
граммы. Однако, часто ситуация может быть более сложной, при
которой передача влияния происходит с помощью какой-либо еще
части программы. Ясно, что необходимым условием зависимос ти
частей программы является наличие “канала” передачи информа-
ции от одной части к другой число составляющих такого “кана-
ла” могут входить некоторые участки памяти и п рогр амм ные еди-
ницы). Заметим, однако, что наличе такого “канал” не является
достаточным условием зависимости частей программы; лишь пере-
дача по “каналу” информации от одной части программы, реально
влияющей на результаты работы второй части является достаточ-
ным условием их зависимости.
Для иллюстрации дальше рассматривается упомянутый выше
простейший случай.
Множество переменных, которые программа (процесс) читает,
назовем множеством чтения, а множество переменных, которые
программа записывает, назовем множеством записи программы
(процесса).
Для того, чтобы две части программы (две программы, два
процесса) были зависимы, необходимо, чтобы перечение множества
чтения одной из них с множеством зап иси другой было не пусто.
Обратно, для независимости двух процессов достаточно, чтобы
множество чтения любого из них и множество записи второго не
пересекались.
Замечание. Если два про цесса работают в рамках одной про-
граммы, то результаты их работы, возможно, приводят к общему
результату, смысл которого меняется в зависимости от порядка
поступления результатов упомянутых процессов. Поэтому даже в
случае независимости двух процессов порядок их выполнения мо-
жет быть важен.
Возвращаясь к вопросу о распараллеливании поиска образца в
файле, запишем программу
string line;
[прочитать входную строку из stdin в переменную line];
while (!EOF) {
co
21