Trying to set PTHREAD_SCOPE_SYSTEM
'Chris Hall'
chris.hall.list at highwayman.com
Sat Apr 28 12:50:58 UTC 2012
For my application (a BGP daemon) I think I should be setting all its
pthreads to PTHREAD_SCOPE_SYSTEM. (This may be where I am going
wrong, of course, but bear with me.)
I have studied the POSIX specifications and the FreeBSD man pages, and
am stuck.
pthread_init_attr() is supposed to give me the default settings for
everything, including the scope and
PTHREAD_INHERIT_SCHED/_EXPLICIT_SCHED.
First difficulty: if it is PTHREAD_INHERIT_SCHED, what are the scope,
schedpolicy and schedparam set to ?
Second difficulty: if I set PTHREAD_EXPLICIT_SCHED, will that change
the scope/policy/param to the defaults, or leave them unchanged (in
which case are they the appropriate defaults) ? Or, am I really
expected to set all of scope/policy/param if I override a default
PTHREAD_INHERIT_SCHED ? (If the default is PTHREAD_SCOPE_SYSTEM, am I
all set having cleared PTHREAD_INHERIT_SCHED ?)
Third difficulty: if I set PTHREAD_SCOPE_SYSTEM and the default is
PTHREAD_SCOPE_PROCESS, do I also need to set policy/param ? If so,
where do I find suitable default policy/param ?
(I could copy the policy/param from the main thread... but will that
be suitable for PTHREAD_SCOPE_SYSTEM ?)
Fourth difficulty: if I dick about with scope/policy/param, will I
need special privileges (root, say) ?
Fifth difficulty: it is clearly easiest to leave this whole thing
alone and ignore pthread_attr_t altogether. Is there a way to set
PTHREAD_SCOPE_SYSTEM as the default for a given application from the
outside ?
POSIX appears to define a bunch of stuff in this area... but so much
is implementation defined, or simply not defined I imagine (a) 99.9%
of threaded applications do not attempt to use pthread_attr_t at all,
and (b) that somewhere each implementation will define what it does ?
Help !!
Thanks,
Chris
More information about the freebsd-threads
mailing list