Professional Documents
Culture Documents
Si <var2> = 0, se suspende la ejecucin del proceso hasta que se ejecute la instruccin POST <VAR3> TO <VAR2> en otro proceso que consiste en poner un valor distinto de cero en <var2> Si <var2> 0, entonces o <var1> =<var2> o <var2> = 0 EJEMPLO 1: SINCRONIZACIN DE PROCESOS GLOBAL BLOQ ; Variable 2 para bloquear y desbloquear PROGRAM DOS post 1 to bloq end
PROGRAM UNO set bloq =0 pend var1 from bloq run pieza end
La ejecucin del programa UNO se suspende hasta que se ejecute el programa DOS, asignando el valor 1 a BLOQ
Proceso 1
Proceso 2 CONTROLADOR
PROCESO UNO . wait (bloq) <seccin crtica uno> signal (bloq) end
PROCESO DOS . wait (bloq) <seccin crtica dos> signal (bloq) end
DESCRIPCIN: QPOST QPEND Pone en cola los valores a procesar Toma los valores de la cola
Si se acaba la cola, QPEND suspende la ejecucin hasta que otra orden QPOST introduce un valor Si la cola est llena, QPOST suspende la ejecucin del programa hasta que otra orden QPEND saque un valor. El tamao de la cola es igual a la dimensin del vector <var2> y debe inicializarse a cero antes de utilizarla
EJEMPLO 1: SINCRONIZACIN DE PROCESOS DIMG COLA[10] ; Declaracin de cola PROGRAM DOS qpost 1 to cola end
PROGRAM UNO define valor label 1 qpend valor from cola run pieza goto 1 end
El programa pieza se ejecutar cuando el programa DOS enve un valor a la cola. Si la cola est vaca, el programa UNO se suspender.