Linux and UNIX Man Pages

Test Your Knowledge in Computers #696
Difficulty: Medium
The Cathedral model, in which source code is available with each software release, but code developed between releases, is restricted to an exclusive group of software developers.
True or False?
Linux & Unix Commands - Search Man Pages

pthread_spin_destroy(3) [freebsd man page]

PTHREAD_SPIN_INIT(3)					   BSD Library Functions Manual 				      PTHREAD_SPIN_INIT(3)

NAME
pthread_spin_init, pthread_spin_destroy -- initialize or destroy a spin lock LIBRARY
POSIX Threads Library (libpthread, -lpthread) SYNOPSIS
#include <pthread.h> int pthread_spin_init(pthread_spinlock_t *lock, int pshared); int pthread_spin_destroy(pthread_spinlock_t *lock); DESCRIPTION
The pthread_spin_init() function will initialize lock to an unlocked state and allocate any resources necessary to begin using it. If pshared is set to PTHREAD_PROCESS_SHARED, any thread, whether belonging to the process in which the spinlock was created or not, that has access to the memory area where lock resides, can use lock. If it is set to PTHREAD_PROCESS_PRIVATE, it can only be used by threads within the same process. The pthread_spin_destroy() function will destroy lock and release any resources that may have been allocated on its behalf. RETURN VALUES
If successful, both pthread_spin_init() and pthread_spin_destroy() will return zero. Otherwise, an error number will be returned to indicate the error. Neither of these functions will return EINTR. ERRORS
The pthread_spin_init() and pthread_spin_destroy() functions will fail if: [EBUSY] An attempt to initialize or destroy lock while it is in use. [EINVAL] The value specified by lock is invalid. The pthread_spin_init() function will fail if: [EAGAIN] Insufficient resources, other than memory, to initialize lock. [ENOMEM] Insufficient memory to initialize lock. SEE ALSO
pthread_spin_lock(3), pthread_spin_unlock(3) HISTORY
The pthread_spin_init() and pthread_spin_destroy() functions first appeared in N:M Threading Library (libkse, -lkse) in FreeBSD 5.2, and in 1:1 Threading Library (libthr, -lthr) in FreeBSD 5.3. BUGS
The implementation of pthread_spin_init() does not fully conform to IEEE Std 1003.2 (``POSIX.2'') because the pshared argument is ignored in 1:1 Threading Library (libthr, -lthr), and in N:M Threading Library (libkse, -lkse) if any value other than PTHREAD_PROCESSES_PRIVATE is specified, it returns EINVAL. BSD
January 22, 2004 BSD

Check Out this Related Man Page

pthread_spin_destroy(3C)				   Standard C Library Functions 				  pthread_spin_destroy(3C)

NAME
pthread_spin_destroy, pthread_spin_init - destroy or initialize a spin lock object SYNOPSIS
cc -mt [ flag... ] file... [ library... ] #include <pthread.h> int pthread_spin_destroy(pthread_spinlock_t *lock); int pthread_spin_init(pthread_spinlock_t *lock, int pshared); DESCRIPTION
The pthread_spin_destroy() function destroys the spin lock referenced by lock and release any resources used by the lock. The effect of subsequent use of the lock is undefined until the lock is reinitialized by another call to pthread_spin_init(). The results are undefined if pthread_spin_destroy() is called when a thread holds the lock, or if this function is called with an uninitialized thread spin lock. The pthread_spin_init() function allocates any resources required to use the spin lock referenced by lock and initialize the lock to an unlocked state. If the Thread Process-Shared Synchronization option is supported and the value of pshared is PTHREAD_PROCESS_SHARED, the spin lock can be operated upon by any thread that has access to the memory where the spin lock is allocated, even if it is allocated in memory that is shared by multiple processes. If the Thread Process-Shared Synchronization option is supported and the value of pshared is PTHREAD_PROCESS_PRIVATE, or if the option is not supported, the spin lock can only be operated upon by threads created within the same process as the thread that initialized the spin lock. If threads of differing processes attempt to operate on such a spin lock, the behavior is undefined. The results are undefined if pthread_spin_init() is called specifying an already initialized spin lock. The results are undefined if a spin lock is used without first being initialized. If the pthread_spin_init() function fails, the lock is not initialized and the contents of lock are undefined. Only the object referenced by lock can be used for performing synchronization. The result of referring to copies of that object in calls to pthread_spin_destroy(), pthread_spin_lock(3C), pthread_spin_trylock(3C), or pthread_spin_unlock(3C) is undefined. RETURN VALUES
Upon successful completion, these functions returns 0. Otherwise, an error number is returned to indicate the error. ERRORS
The pthread_spin_init() function will fail if: EAGAIN The system lacks the necessary resources to initialize another spin lock. These functions may fail if: EBUSY The system has detected an attempt to initialize or destroy a spin lock while it is in use (for example, while being used in a pthread_spin_lock() call) by another thread. EINVAL The value specified by lock is invalid. ATTRIBUTES
See attributes(5) for descriptions of the following attributes: +-----------------------------+-----------------------------+ | ATTRIBUTE TYPE | ATTRIBUTE VALUE | +-----------------------------+-----------------------------+ |Interface Stability |Standard | +-----------------------------+-----------------------------+ |MT-Level |MT-Safe | +-----------------------------+-----------------------------+ SEE ALSO
pthread_spin_lock(3C), pthread_spin_unlock(3C), attributes(5), standards(5) SunOS 5.11 30 Jan 2004 pthread_spin_destroy(3C)

Featured Tech Videos