PROLOG         top

       This manual page is part of the POSIX Programmer's Manual.  The Linux
       implementation of this interface may differ (consult the
       corresponding Linux manual page for details of Linux behavior), or
       the interface may not be implemented on Linux.

NAME         top

       pthread_getconcurrency, pthread_setconcurrency — get and set the
       level of concurrency

SYNOPSIS         top

       #include <pthread.h>

       int pthread_getconcurrency(void);
       int pthread_setconcurrency(int new_level);

DESCRIPTION         top

       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

RETURN VALUE         top

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

       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         top

       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.

       The pthread_setconcurrency() function shall not return an error code
       of [EINTR].

       The following sections are informative.

EXAMPLES         top



       Application developers should note that an implementation can always
       ignore any calls to pthread_setconcurrency() and return a constant
       for pthread_getconcurrency().  For this reason, it is not recommended
       that portable applications use this function.

RATIONALE         top



       These functions may be removed in a future version.

SEE ALSO         top

       The Base Definitions volume of POSIX.1‐2008, pthread.h(0p)

COPYRIGHT         top

       Portions of this text are reprinted and reproduced in electronic form
       from IEEE Std 1003.1, 2013 Edition, Standard for Information
       Technology -- Portable Operating System Interface (POSIX), The Open
       Group Base Specifications Issue 7, Copyright (C) 2013 by the
       Institute of Electrical and Electronics Engineers, Inc and The Open
       Group.  (This is POSIX.1-2008 with the 2013 Technical Corrigendum 1
       applied.) In the event of any discrepancy between this version and
       the original IEEE and The Open Group Standard, the original IEEE and
       The Open Group Standard is the referee document. The original
       Standard can be obtained online at .

       Any typographical or formatting errors that appear in this page are
       most likely to have been introduced during the conversion of the
       source files to man page format. To report such errors, see .

IEEE/The Open Group                 2013          PTHREAD_GETCONCURRENCY(3P)