Difference between revisions of "MC-Basic:SEMAPHORETAKE"

From SoftMC-Wiki
Jump to: navigation, search
m
(Explained that semtake can return before timeout)
 
Line 1: Line 1:
{{Languages}}
+
{{Languages|MC-Basic:SEMAPHORETAKE}}
 
{{MC-Basic
 
{{MC-Basic
 
|SHORT FORM=
 
|SHORT FORM=
Line 13: Line 13:
 
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. 
  
  

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 )

See Also