Составители:
Рубрика:
for [i=0 to n-1] {
receive values(results[i]);
[выполнить некоторые вычисления];
}
}
Если вычисления, производимые этим процессам таковы, что
иной раз Producer выполняет их быстрее, а иной раз их быстрее
выполняет Consumer, то простаивает то Producer, то Consumer, так
что общее время простоя процессов складывается из этих слагае-
мых. При асинхронной работе весьма вероятно, что в канале будет
скапливаться достаточное число сообщений и простоев не будет во-
все.
2. Второй недостаток блокировок состоит в том, что использу-
ющие синхронизацию процессы более предрасположены к взаим-
ным блокировкам, так что программисту нужно наблюдать за тем,
чтобы соблюдалось соответствие между операторами передачи и
приема.
При программ ировани и синхронизации нужно проявл ять из-
вестную осторожность; например, рассмотрим программу обмена
значениями :
channel in1(int), in2(int);
process P1 {
int value1=1, value2;
synch_send in2(value1);
receive in1(value2);
}
process P2 {
int value1, value2=2;
synch_send in1(value2);
receive in2(value1);
}
Эта программа зависнет, поскольку оба процесса заблокируются
в операторах synch_send. В одном из них (но не в обоих) нужно
выполнить операцию receive сначала, а synch_send потом.
51
Страницы
- « первая
- ‹ предыдущая
- …
- 48
- 49
- 50
- 51
- 52
- …
- следующая ›
- последняя »