+NOTE
+
+Threading is a highly experimental feature. There are still a
+few race conditions that show up under high contention on SMP
+machines. Internal implementation is still subject to changes.
+It is not recommended for production use at this time.
+
Building
If you want to build with multi-threading support and you are
* Digital UNIX 4.x
+ * Digital UNIX 3.x (Formerly DEC OSF/1), see additional note below
+
* Solaris 2.x for recentish x (2.5 is OK)
* IRIX 6.2 or newer. 6.2 will require a few os patches.
POSIX.1c threads then read on. Additional information may be in
a platform-specific "hints" file in the hints/ subdirectory.
-Omit the -d from your ./Configure arguments. For example, use
+On other platforms that use Configure to build perl, omit the -d
+from your ./Configure arguments. For example, use:
./Configure -Dusethreads
Zap mallocobj and mallocsrc (foo='')
Change d_mymalloc to undef
+For Digital Unix 3.x (Formerly DEC OSF/1):
+ Add -DOLD_PTHREADS_API to ccflags
+ If compiling with the GNU cc compiler, remove -thread from ccflags
+
+ (The following should be done automatically if you call Configure
+ with the -Dusethreads option).
+ Add -lpthread -lmach -lc_r to libs (in the order specified).
+
For IRIX:
(This should all be done automatically by the hint file).
Add -lpthread to libs
Add -lc_r to libswanted
Change -lc in lddflags to be -lpthread -lc_r -lc
+For Win32:
+ See README.win32, and the notes at the beginning of win32/Makefile
+ or win32/makefile.mk.
+
Now you can do a
make
Bugs
* FAKE_THREADS should produce a working perl but the Thread
-extension won't build with it yet.
-
-* There's a known memory leak (curstack isn't freed at the end
-of each thread because it causes refcount problems that I
-haven't tracked down yet) and there are very probably others too.
+extension won't build with it yet. (FAKE_THREADS has not been
+tested at all in recent times.)
* There may still be races where bugs show up under contention.
Debugging
-Use the -DL command-line option to turn on debugging of the
+Use the -DS command-line option to turn on debugging of the
multi-threading code. Under Linux, that also turns on a quick
hack I did to grab a bit of extra information from segfaults.
If you have a fancier gdb/threads setup than I do then you'll
have to delete the lines in perl.c which say
#if defined(DEBUGGING) && defined(USE_THREADS) && defined(__linux__)
- DEBUG_L(signal(SIGSEGV, (void(*)(int))catch_sigsegv););
+ DEBUG_S(signal(SIGSEGV, (void(*)(int))catch_sigsegv););
#endif
Configure-related info updated 16 July 1998 by
Andy Dougherty <doughera@lafayette.edu>
+
+Other minor updates 10 Feb 1999 by
+Gurusamy Sarathy