GIVESEM
(Statement)

Releases a task from waiting for a semaphore.

GIVESEM <Semaphore ID>

This statement releases the semaphore designated in <Semaphore ID>.
The system permits a restart of a process if there is one task which has the semaphore designated in <Semaphore ID> when it is released. If there is a task waiting for multiple semaphores, the system determines the execution sequence using the queuing system designated by the CREATESEM command when the semaphores were created.

DEFINT Li1, Li2, Li3 = 1
|
|
Li1 = CREATESEM(Li3)
|
'Creates a semaphore with the queuing system
'designated in Li3 and the semaphore
'ID obtained in Li1.
|
Li2 = CREATESEM(Li3)
|
'Creates a semaphore with the queuing system
'designated in Li3 and the semaphore
'ID obtained in Li2.
|
TAKESEM Li1
|
'Obtains the semaphore designated in Li1.
|
TALESEM Li2, 100
|
'Obtains the semaphore designated in Li1.
'However, a timeout occurs after 100 ms.
|
RUN samp1
|
|
GIVESEM Li1
|
'Releases one task from the wait status
'which has the semaphore designated in Li1.
|
FLUSHSEM Li2
|
'Releases all tasks from the wait status
'which have the semaphore designated in Li2.
|
DELETESEM Li1
|
'Deletes the semaphore with the semaphore
'ID designated in Li1.
|
DELETESEM Li2
|
'Deletes the semaphore with the semaphore
'ID designated in Li2.
|