Difference between revisions of "MC-Basic:SEMAPHORETAKE"
m (1 revision) |
(Explained that semtake can return before timeout) |
||
(6 intermediate revisions by 4 users not shown) | |||
Line 1: | Line 1: | ||
+ | {{Languages|MC-Basic:SEMAPHORETAKE}} | ||
{{MC-Basic | {{MC-Basic | ||
|SHORT FORM= | |SHORT FORM= | ||
Line 7: | Line 8: | ||
|AVAILABILITY= | |AVAILABILITY= | ||
− | + | Since Version 3.7.x | |
|DESCRIPTION= | |DESCRIPTION= | ||
SEMTAKE acquires a semaphore that can be used for multi-task synchronization. If a semaphore is free, SEMTAKE returns 1 and the semaphore is marked as ‘taken’. If the semaphore is already taken, SEMTAKE returns 0 and the semaphore’s status does not change. SEMTAKE can be used to block simultaneous access to shared resources in the system or to a critical user software section. | SEMTAKE acquires a semaphore that can be used for multi-task synchronization. If a semaphore is free, SEMTAKE returns 1 and the semaphore is marked as ‘taken’. If the semaphore is already taken, SEMTAKE returns 0 and the semaphore’s status does not change. SEMTAKE can be used to block simultaneous access to shared resources in the system or to a critical user software section. | ||
− | If time-out is provided system will try to acquire a semaphore specified amount of time. | + | If time-out is provided system will try to acquire a semaphore specified amount of time.<br> |
+ | Semtake can return '''before''' specified timeout without acquiring a semaphore, therefore it is essential to check return value. | ||
Line 57: | Line 59: | ||
|SEE ALSO= | |SEE ALSO= | ||
− | * [[ | + | * [[MC-Basic:SEMAPHOREGIVE|SEMAPHOREGIVE]] |
− | |||
+ | [[Category:MC-Basic:Semaphore Handling|SEMAPHORETAKE]] | ||
}} | }} |
Latest revision as of 17:03, 19 November 2017
Language: | English • 中文(简体) |
---|
SEMTAKE acquires a semaphore that can be used for multi-task synchronization. If a semaphore is free, SEMTAKE returns 1 and the semaphore is marked as ‘taken’. If the semaphore is already taken, SEMTAKE returns 0 and the semaphore’s status does not change. SEMTAKE can be used to block simultaneous access to shared resources in the system or to a critical user software section.
If time-out is provided system will try to acquire a semaphore specified amount of time.
Semtake can return before specified timeout without acquiring a semaphore, therefore it is essential to check return value.
Short form
semTake
Syntax
<lval> = SemTake(<semaphore name> { , <timeout>})
Availability
Since Version 3.7.x
Type
Long
Range
return value: 0 = unsuccessful (semaphore not taken)
1 = succeessful (semaphore taken)
<timeout>: 0 to 5000
Units
milliseconds
Default
0
Scope
Task, Terminal
Examples
While semTake(SEM1,1000) = 0 ‘wait for the release of the semaphore
’wait for resource
End While
REM critical section code
……
……
semTake(SEM1) ‘take the semaphore
semTake(SEM1 , 100 )