The Open Group Base Specifications Issue 6
IEEE Std 1003.1, 2004 Edition
Copyright © 2001-2004 The IEEE and The Open Group, All Rights reserved.

#### NAME

> pthread_getconcurrency, pthread_setconcurrency - get and set the level of concurrency

#### SYNOPSIS

> ``[XSI] #include <pthread.h>
> int pthread_getconcurrency(void);
> int pthread_setconcurrency(int` new_level`);``
> `
> `

#### DESCRIPTION

> Unbound threads in a process may or may not be required to be simultaneously active. By default, the threads implementation ensures that a sufficient number of threads are active so that the process can continue to make progress. While this conserves system resources, it may not produce the most effective level of concurrency.

> The pthread_setconcurrency() function allows an application to inform the threads implementation of its desired concurrency level, new_level. The actual level of concurrency provided by the implementation as a result of this function call is unspecified.

> If new_level is zero, it causes the implementation to maintain the concurrency level at its discretion as if pthread_setconcurrency() had never been called.

> The pthread_getconcurrency() function shall return the value set by a previous call to the pthread_setconcurrency() function. If the pthread_setconcurrency() function was not previously called, this function shall return zero to indicate that the implementation is maintaining the concurrency level.

> A call to pthread_setconcurrency() shall inform the implementation of its desired concurrency level. The implementation shall use this as a hint, not a requirement.

> If an implementation does not support multiplexing of user threads on top of several kernel-scheduled entities, the pthread_setconcurrency() and pthread_getconcurrency() functions are provided for source code compatibility but they shall have no effect when called. To maintain the function semantics, the new_level parameter is saved when pthread_setconcurrency() is called so that a subsequent call to pthread_getconcurrency() shall return the same value.

#### RETURN VALUE

> If successful, the pthread_setconcurrency() function shall return zero; otherwise, an error number shall be returned to indicate the error.

> The pthread_getconcurrency() function shall always return the concurrency level set by a previous call to pthread_setconcurrency(). If the pthread_setconcurrency() function has never been called, pthread_getconcurrency() shall return zero.

#### ERRORS

> The pthread_setconcurrency() function shall fail if:

> [EINVAL]
>   The value specified by new_level is negative.
> [EAGAIN]
>   The value specified by new_level would cause a system resource to be exceeded.

> These functions shall not return an error code of [EINTR].

The following sections are informative.

#### EXAMPLES

> None.

#### APPLICATION USAGE

> Use of these functions changes the state of the underlying concurrency upon which the application depends. Library developers are advised to not use the pthread_getconcurrency() and pthread_setconcurrency() functions since their use may conflict with an applications use of these functions.

#### RATIONALE

> None.

#### FUTURE DIRECTIONS

> None.

#### SEE ALSO

> The Base Definitions volume of IEEE Std 1003.1-2001, <pthread.h>

#### CHANGE HISTORY

> First released in Issue 5.

End of informative text.

UNIX ® is a registered Trademark of The Open Group.
POSIX ® is a registered Trademark of The IEEE.
[ Main Index | XBD | XCU | XSH | XRAT ]