---
name: "pthread_getconcurrency"
section: "3"
platform: "freebsd"
package: "base"
version: "16.0-CURRENT-20261027-61c70dc16a79"
release: "FreeBSD 16.0-CURRENT (2026-10-27)"
platforms: ["linux", "freebsd"]
url: "https://new.carta.tech/pthread_getconcurrency"
---

# pthread\_getconcurrency(3)

get or set level of concurrency

## NAME

**pthread\_getconcurrency**, **pthread\_setconcurrency** – get or set level of concurrency

## LIBRARY

POSIX Threads Library (libpthread, -lpthread)

## SYNOPSIS

**#include \<pthread.h\>**

*int*\

**pthread\_getconcurrency**(*void*);

*int*\

**pthread\_setconcurrency**(*int new\_level*);

## DESCRIPTION

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**() was never called. The **pthread\_getconcurrency**() function returns the value set by a previous call to the **pthread\_setconcurrency**() function. If the **pthread\_setconcurrency**() function was not previously called, this function returns zero to indicate that the implementation is maintaining the concurrency level. When an application calls **pthread\_setconcurrency**(), it is informing the implementation of its desired concurrency level. The implementation uses this as a hint, not a requirement.

## RETURN VALUES

If successful, the **pthread\_setconcurrency**() function returns zero. Otherwise, an error number is returned to indicate the error. The **pthread\_getconcurrency**() function always returns the concurrency level set by a previous call to **pthread\_setconcurrency**(). If the **pthread\_setconcurrency**() function has never been called, **pthread\_getconcurrency**() returns zero.

## ERRORS

The **pthread\_setconcurrency**() function will 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.

## 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 application's use of these functions.

## STANDARDS

The **pthread\_getconcurrency**() and **pthread\_setconcurrency**() functions conform to Version 2 of the Single UNIX Specification (“SUSv2”).
