Syntax:
DEBLOCK(<node name>);It is used to finish the block state of a node (inhibition of sending messages). Its action consists in suppressing the suspended state of the next event activation of the node and to execute the event at the actual time. If the node were not blocked nothing is done.
This procedure can be used in nodes of any type.
Example:
Inc :: IT := EXPO(1.0); SENDTO(FirstProc); IF LL(EL_FirstProc) >= 4 THEN BLOCK(Inc); FirstProc (R) :: RELEASE BEGIN SENDTO(SecProc); IF LL(EL_SecProc) >= 5 THEN BLOCK(FirstProc); END; STAY := EXPO(5, 2); IF LL(EL_FirstProc) < 4 THEN DEBLOCK(Inc); SecProc (R) :: STAY := 1.8; IF LL(EL_SecProc) < 3 THEN DEBLOCK(FirstProc); Exit :: INIT TSIM := 25.0; ACT(INC, 0); FirstProc := 7; IF (LL(EL_FirstProc) > 4 THEN DEBLOCK(FirstProc);Messages (objects) arrive the at
Inc
. They must undergo a
process in parallel (7 at most) and then a sequential process. The queues
before these processes have a limited capacity and the movement of the
messages must be blocked upstream when this quantity is reached.
Arrivals at Inc
are stopped when
the queue at FirstProc
(capacity 7) is equal to 4.
After certain time in FirstProc
messages pass to
SecProc
to be processed one by one.
The queue in SecProc
is limited to 5. When it contains 5
messages, the SecProc
in FirstProc
is stopped.
See that the node Inc
can block itself after it
has sent the message to FirstProc
, checking the following
queue. The node FirstProc
also can block itself after
sending the message to SecProc
.
Each node can deblock the former when it scan its EL to extract
(if possible) one message.