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.