?RCS:
?RCS: $Log: usethreads.U,v $
?RCS:
-?MAKE:usethreads useithreads use5005threads d_oldpthreads: \
+?MAKE:usethreads useithreads d_oldpthreads usereentrant: \
Myread Oldconfig Setvar test cat
?MAKE: -pick add $@ %<
?Y:TOP
?S: and indicates that Perl should be built to use the interpreter-based
?S: threading implementation.
?S:.
-?S:use5005threads:
-?S: This variable conditionally defines the USE_5005THREADS symbol,
-?S: and indicates that Perl should be built to use the 5.005-based
-?S: threading implementation.
-?S:.
?X: I'm putting old_pthreads in this unit because it might eventually
?X: be part of an automatic determination to see if we can use threads
?X: at all.
?S: draft POSIX threads API. This is only potentially meaningful if
?S: usethreads is set.
?S:.
+?S:usereentrant:
+?S: This variable conditionally defines the USE_REENTRANT_API symbol,
+?S: which indicates that the thread code may try to use the various
+?S: _r versions of library functions. This is only potentially
+?S: meaningful if usethreads is set and is very experimental, it is
+?S: not even prompted for.
+?S:.
?C:USE_ITHREADS:
?C: This symbol, if defined, indicates that Perl should be built to
?C: use the interpreter-based threading implementation.
?C:.
-?C:USE_5005THREADS:
-?C: This symbol, if defined, indicates that Perl should be built to
-?C: use the 5.005-based threading implementation.
-?C:.
?C:USE_THREADS:
?C: This symbol, if defined, indicates that Perl should
?C: be built to use threads. At present, it is a synonym for
-?C: USE_5005THREADS, but eventually the source ought to be changed
-?C: to use this to mean _any_ threading implementation.
+?C: and USE_ITHREADS, but eventually the source ought to be
+?C: changed to use this to mean _any_ threading implementation.
?C:.
?C:OLD_PTHREADS_API:
?C: This symbol, if defined, indicates that Perl should
?C: be built to use the old draft POSIX threads API.
?C:.
-?H:#$use5005threads USE_5005THREADS /**/
+?C:USE_REENTRANT_API:
+?C: This symbol, if defined, indicates that Perl should
+?C: try to use the various _r versions of library functions.
+?C: This is extremely experimental.
+?C:.
?H:#$useithreads USE_ITHREADS /**/
-?H:?%<:#if defined(USE_5005THREADS) && !defined(USE_ITHREADS)
-?H:?%<:#define USE_THREADS /* until src is revised*/
-?H:?%<:#endif
+?H:#$usethreads USE_THREADS /**/
?H:#$d_oldpthreads OLD_PTHREADS_API /**/
+?H:#$usereentrant USE_REENTRANT_API /**/
?H:.
-?LINT:set usethreads useithreads use5005threads d_oldpthreads
+?LINT:set usethreads d_oldpthreads
?INIT:: set usethreads on the Configure command line to enable threads.
+?INIT:usereentrant='undef'
?F:!usethreads.cbu
+: Do we want threads support and if so, what type
?X: We should really have some explanatory text here, and some
?X: automatic setting of sensible defaults.
case "$usethreads" in
$define|true|[yY]*) dflt='y';;
-*) dflt='n';;
+*) # Catch case where user specified ithreads but
+ # forgot -Dusethreads (A.D. 4/2002)
+ case "$useithreads" in
+ *$define*) dflt='y';;
+ *) dflt='n';;
+ esac
+ ;;
esac
cat <<EOM
-Perl can be built to take advantage of threads on some systems.
+Perl can be built to offer a form of threading support on some systems
To do so, Configure can be run with -Dusethreads.
-Note that threading is a highly experimental feature, and
-some known race conditions still remain. If you choose to try
-it, be very sure to not actually deploy it for production
-purposes. README.threads has more details, and is required
-reading if you enable threads.
+Note that Perl built with threading support runs slightly slower
+and uses slightly more memory than plain Perl.
If this doesn't make any sense to you, just accept the default '$dflt'.
EOM
set usethreads
eval $setvar
-case "$usethreads" in
-$define)
- $cat <<EOM
-
-As of 5.5.640, Perl has two different internal threading implementations,
-the 5.005 version (5005threads) and an interpreter-based version
-(ithreads) that has one interpreter per thread. Both are very
-experimental. This arrangement exists to help developers work out
-which one is better.
-
-If you're a casual user, you probably don't want interpreter-threads
-at this time. There doesn't yet exist a way to create threads from
-within Perl in this model, i.e., "use Thread;" will NOT work.
-EOM
- : Default to ithreads unless overridden on command line or with
- : old config.sh
- dflt='y'
- case "$use5005threads" in
- $define|true|[yY]*) dflt='n';;
- esac
- case "$useithreads" in
- $undef|false|[nN]*) dflt='n';;
- esac
- rp='Use interpreter-based ithreads?'
- . ./myread
- case "$ans" in
- y|Y) val="$define" ;;
- *) val="$undef" ;;
- esac
- set useithreads
- eval $setvar
- : Now set use5005threads to the opposite value.
- case "$useithreads" in
- $define) val="$undef" ;;
- *) val="$define" ;;
- esac
- set use5005threads
- eval $setvar
- ;;
-*)
- useithreads="$undef"
- use5005threads="$undef"
- ;;
-esac
-
-?X: This is not supposed to be possible but with some trickery, maybe.
-case "$useithreads$use5005threads" in
-"$define$define")
- $cat >&4 <<EOM
-
-You cannot have both the ithreads and the 5.005 threads enabled
-at the same time. Disabling the 5.005 threads since they are
-much less stable than the ithreads.
+useithreads="$usethreads"
-EOM
- use5005threads="$undef"
- ;;
-esac
-
-?X: Check out what kind of threads api we have
+?X: Check out what kind of threads API we have
case "$d_oldpthreads" in
'') : Configure tests would be welcome here. For now, assume undef.
val="$undef" ;;
?X: is present in libswanted. If that fails to be true, then this
?X: can be changed to add pthread to the very end of libswanted.
-case "$usethreads" in
-"$define"|true|[yY]*)
: Look for a hint-file generated 'call-back-unit'. If the
: user has specified that a threading perl is to be built,
: we may need to set or change some other defaults.
- if $test -f usethreads.cbu; then
- echo "Your platform has some specific hints for threaded builds, using them..."
- . ./usethreads.cbu
- else
+if $test -f usethreads.cbu; then
+ echo "Your platform has some specific hints regarding threaded builds, using them..."
+ . ./usethreads.cbu
+else
+ case "$usethreads" in
+ "$define"|true|[yY]*)
$cat <<EOM
-(Your platform doesn't have any specific hints for threaded builds.
+(Your platform does not have any specific hints for threaded builds.
Assuming POSIX threads, then.)
EOM
- fi
;;
-esac
+ esac
+fi