MUTEX.TRYLOCK(3) 1 MUTEX.TRYLOCK(3)Mutex::trylock - Attempt to Acquire Mutex
SYNOPSIS
finalpublicstatic boolean Mutex::trylock (long $mutex)
DESCRIPTION
Attempt to lock the Mutex for the caller without blocking if the Mutex is owned (locked) by another Thread.
PARAMETERS
o $mutex
-A handle returned by a previous call to Mutex.create(3).
RETURN VALUES
A boolean indication of success.
EXAMPLES
Example #1
Mutex Locking and Unlocking
<?php
/** You cannot use the "new" keyword, a Mutex is not a PHP object **/
$mutex = Mutex::create();
/** You can now try to lock the mutex in any context **/
var_dump(Mutex::trylock($mutex));
/** It is invalid to attempt to destroy a locked Mutex **/
var_dump(Mutex::unlock($mutex));
/** Always destroy mutex you have created **/
Mutex::destroy($mutex);
?>
The above example will output:
bool(true)
bool(true)
PHP Documentation Group MUTEX.TRYLOCK(3)
Check Out this Related Man Page
PTHREAD_MUTEX(3) BSD Library Functions Manual PTHREAD_MUTEX(3)NAME
pthread_mutex -- mutual exclusion primitives
LIBRARY
POSIX Threads Library (libpthread, -lpthread)
SYNOPSIS
#include <pthread.h>
int
pthread_mutex_init(pthread_mutex_t * restrict mutex, const pthread_mutexattr_t * restrict attr);
int
pthread_mutex_destroy(pthread_mutex_t *mutex);
int
pthread_mutex_lock(pthread_mutex_t *mutex);
int
pthread_mutex_trylock(pthread_mutex_t *mutex);
int
pthread_mutex_unlock(pthread_mutex_t *mutex);
pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
DESCRIPTION
The pthread_mutex_init() function creates a new mutex, with attributes specified with attr. If attr is NULL, the default attributes are
used.
The macro PTHREAD_MUTEX_INITIALIZER can be used to initialize a mutex when the default attributes are appropriate and the mutex can be stati-
cally allocated. The behavior is similar to pthread_mutex_init() with attr specified as NULL, except that no error checking is done.
The pthread_mutex_destroy() function frees the resources allocated for mutex. It is possible to reinitialize a destroyed mutex, but unde-
fined behavior may follow if the destroyed object is otherwise referenced.
The pthread_mutex_lock() function locks mutex. If the mutex is already locked, the calling thread will block until the mutex becomes avail-
able. The error conditions may vary depending on the type of the mutex; see pthread_mutexattr(3) for additional details.
The pthread_mutex_trylock() function locks mutex. If the mutex is already locked, pthread_mutex_trylock() will not block waiting for the
mutex, but will return an error condition.
The pthread_mutex_unlock() function unlocks an acquired mutex. When operating with the default mutex type, undefined behavior follows if a
thread tries to unlock a mutex that has not been locked by it, or if a thread tries to release a mutex that is already unlocked.
RETURN VALUES
Upon success all described functions return zero. Otherwise, an error number will be returned to indicate the error.
ERRORS
pthread_mutex_init() may fail if:
[EAGAIN] The system lacks the resources to initialize another mutex.
[EINVAL] The value specified by attr is invalid.
[ENOMEM] The process cannot allocate enough memory to initialize another mutex.
pthread_mutex_destroy() may fail if:
[EBUSY] Mutex is locked by another thread.
[EINVAL] The value specified by mutex is invalid.
pthread_mutex_lock() may fail if:
[EDEADLK] A deadlock would occur if the thread blocked waiting for mutex.
[EINVAL] The value specified by mutex is invalid.
pthread_mutex_trylock() may fail if:
[EBUSY] Mutex is already locked.
[EINVAL] The value specified by mutex is invalid.
pthread_mutex_unlock() may fail if:
[EINVAL] The value specified by mutex is invalid.
[EPERM] The current thread does not hold a lock on mutex.
SEE ALSO pthread(3), pthread_barrier(3), pthread_cond(3), pthread_mutexattr(3), pthread_rwlock(3), pthread_spin(3)STANDARDS
These functions conform to IEEE Std 1003.1-2001 (``POSIX.1'').
BSD July 8, 2010 BSD