TAKESEM
(Statement)
Obtains a semaphore with a designated semaphore ID.
TAKESEM <Semaphore ID>[,<Timeout time>]
This statement obtains the semaphore designated in <Semaphore ID>.
If another task obtains a semaphore, the system waits for the semaphore to be released before the semaphore is obtained.
Waiting time can be designated in milliseconds (ms) using the option <Timeout time>. If the system cannot obtain a semaphore within the designated time, an error occurs.
When the timeout time option is used, note that the waiting time elapses even in suspension after an instantaneous stop of the robot during execution of an instruction and a subsequent restart of the robot.
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.
|