# Locking a Semaphore

To lock a semaphore, thereby preventing other tasks from accessing the associated resource until your task is finished with it, call the `LockSemaphore()` function:

  `int32 LockSemaphore( Item s, uint32 flags )`

The `s` argument is the item number of the semaphore for the resource you want to lock. Use the `flags` argument to specify what to do if the resource is already locked: if you include the `SEM_WAIT` flag, your task is put into wait state until the resource is available.

`LockSemaphore()` returns 1 if the resource was locked successfully. If the resource is already locked and you did not include the `SEM_WAIT` flag in the flags argument, the function returns 0. If an error occurs, the function returns a negative error code.