pthread_getconcurrency or pthread_setconcurrency Subroutine

Purpose

Gets or sets level of concurrency.

Library

Threads Library (libthreads.a)

Syntax

#include <pthread.h>

int pthread_getconcurrency (void); 

int pthread_setconcurrency (new_level)
int new_level;

Description

The pthread_setconcurrency subroutine 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 subroutine returns the value set by a previous call to the pthread_setconcurrency subroutine. If the pthread_setconcurrency subroutine 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.

Use of these subroutines 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 subroutines since their use may conflict with an applications use of these functions.

Parameters

Item Description
new_level Specifies the value of the concurrency level.

Return Value

If successful, the pthread_setconcurrency subroutine returns zero. Otherwise, an error number is returned to indicate the error.

The pthread_getconcurrency subroutine always returns the concurrency level set by a previous call to pthread_setconcurrency. If the pthread_setconcurrency subroutine has never been called, pthread_getconcurrency returns zero.

Error Codes

The pthread_setconcurrency subroutine will fail if:

Item Description
EINVAL The value specified by new_level is negative.
EAGAIN The value specific by new_level would cause a system resource to be exceeded.