thr_setconcurrency(3thread)
thr_setconcurrency --
request a level of concurrency
Synopsis
cc [options] -Kthread file
#include <thread.h>
int thr_setconcurrency(int new_level);
Description
thr_setconcurrency tells the implementation
the number of lightweight processes (LWPs)
that the user would like available for running multiplexed threads.
thr_setconcurrency sets to new_level
the requested level, or degree, of concurrency,
which is the number of LWPs
that the user would like available
to execute multiplexed threads in the process.
The requested concurrency is a hint to the implementation as to
the level of concurrency expected by the user;
the implementation might use this value to affect the number of
LWPs available for running multiplexed threads.
thr_create(3thread)
with the THR_INCR_CONC flag
is another way to control concurrency.
Parameters
new_level-
the requested level of concurrency
new_level parameter
new_level must be a non-negative integer.
thr_setconcurrency interprets it as follows:
-
If new_level is zero,
thr_setconcurrency sets the level of concurrency to the default level.
-
If new_level is greater than the current number of LWPs,
in this implementation,
thr_setconcurrency
will create LWPs until the number of LWPs in the pool
equals new_level,
unless new_level exceeds a system limit.
In that case, LWPs will be created only up to the system limit.
However, if new_level exceeds the number of threads in the process,
thr_setconcurrency
will create new LWPs so that the number of LWPs
equals the number of threads in the process.
-
If new_level is less than the current number of LWPs,
thr_setconcurrency
will allow LWPs to terminate themselves as the result of aging.
-
If new_level is equal to the current number of LWPs,
thr_setconcurrency sets the new level of concurrency,
but does not create or terminate any LWPs.
When the number of LWPs becomes greater than the number of threads
in the process,
the concurrency level might automatically decay over time to be equal to
or less than the number of threads in the process.
This process is called ``aging''.
In this implementation,
if an LWP is inactive for a certain length of time,
it will terminate itself if:
-
the number of LWPs is greater than the requested concurrency level
-
or the number of LWPs is greater than the number of threads in the process
Usage
The Threads Library ensures that a sufficient number of threads
are active so that the process can continue to make progress.
While this conserves system resources,
it might not produce the most effective level of concurrency.
thr_setconcurrency permits the application
to give the Threads Library a hint
about the desired level of concurrency.
Return values
thr_setconcurrency returns zero for success
and an error number for failure, as described below.
Errors
If the following condition is detected,
thr_setconcurrency returns the corresponding value:
EINVAL-
new_level is negative.
References
Intro(3thread),
thr_create(3thread),
thr_getconcurrency(3thread)
Notices
The creation or termination of LWPs
is not synchronous with the
call to thr_setconcurrency.
If new_level causes a system limit to
be exceeded no error is returned.
The Threads Library will always ensure that an LWP
is available to run multiplexed threads.
© 2004 The SCO Group, Inc. All rights reserved.
UnixWare 7 Release 7.1.4 - 25 April 2004