[Return to Bookshelf] [Contents] [Previous Section] [Next Section] [Index] [Help]


pthread_mutex_lock

Locks an unlocked mutex. If the mutex is locked, causes the thread to wait for the mutex to become available.

Syntax

pthread_mutex_lock(
                   mutex );
 


Argument Data Type Access

mutex opaque pthread_mutex_t read


C Binding

int
pthread_mutex_lock (
pthread_mutex_t *mutex);

Arguments

mutex
Mutex locked.

Description

This routine locks a mutex and its behavior varies based on the kind of mutex.

If you specified a recursive mutex, the current owner of a mutex can relock the same mutex without blocking. If you specified a nonrecursive mutex and the current owner tries to lock the mutex a second time, the EDEADLK error is reported. If the mutex is locked when a thread calls this routine, the thread waits for the mutex to become available. If you specified a fast mutex, a deadlock can result if the current owner of a mutex calls this routine in an attempt to lock the mutex a second time.

The thread that has locked a mutex becomes its current owner and remains the owner until the same thread has unlocked it. This routine returns with the mutex in the locked state and with the current thread as the mutex's current owner. See pthread_mutexattr_ setkind_np for information about fast, recursive, and nonrecursive mutexes.

Return Values

If an error condition occurs, this routine returns -1 and sets errno to the corresponding error value. Possible return values are as follows:
Return  Error         Description

0 Successful completion. -1 [EINVAL] The value specified by mutex is invalid. -1 [EDEADLK] A deadlock condition is detected.



[Return to Bookshelf] [Contents] [Previous Section] [Next Section] [Index] [Help]