GNAT under Solaris/Sparc 32 bits comes with an alternate tasking run-time
library based on POSIX threads — rts-pthread.
This run-time library has the advantage of being mostly shared across all
POSIX-compliant thread implementations, and it also provides under
Solaris 8 the PTHREAD_PRIO_INHERIT
and PTHREAD_PRIO_PROTECT
semantics that can be selected using the predefined pragma
Locking_Policy
with respectively
Inheritance_Locking
and Ceiling_Locking
as the policy.
As explained above, the native run-time library is based on the Solaris thread
library (libthread
) and is the default library.
When the Solaris threads library is used (this is the default), programs compiled with GNAT can automatically take advantage of and can thus execute on multiple processors. The user can alternatively specify a processor on which the program should run to emulate a single-processor system. The multiprocessor / uniprocessor choice is made by setting the environment variable GNAT_PROCESSOR to one of the following:
-2
GNAT_PROCESSOR
unset
-1
0 .. Last_Proc
Last_Proc
is equal to _SC_NPROCESSORS_CONF - 1
(where _SC_NPROCESSORS_CONF
is a system variable).