X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=README.threads;h=15d36de6446c0faa99673db166f26e275a531b07;hb=f3faeb53b75c95d2773d14d859d4fa9ca1594daa;hp=4ae2f37ae52810b279352103bd44e8b52d2b2c6a;hpb=effcca5c20f0d4c4c0051fd34dc91e3022e262f6;p=p5sagit%2Fp5-mst-13.2.git diff --git a/README.threads b/README.threads index 4ae2f37..15d36de 100644 --- a/README.threads +++ b/README.threads @@ -1,7 +1,20 @@ -NOTE +NOTE: This documentation describes the style of threading that was +available in 5.005. Perl v5.6 also has the early beginnings of +interpreter-based threads support (which is what will be enabled by +default when you simply ask for -Dusethreads). However, be advised +that interpreter threads cannot as yet be created from the Perl level +yet. If you're looking to create threads from within Perl, chances +are you _don't_ want interpreter threads, but want the older support +for threads described below, enabled with: + + sh Configure -Dusethreads -Duse5005threads + +The rest of this document only applies to the use5005threads style of +threads. +--------------------------------------------------------------------------- -Threading is a highly experimental feature. There are still a -few race conditions that show up under high contention on SMP +Support for threading is still in the highly experimental stages. There +are known 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. @@ -11,7 +24,7 @@ Building If your system is in the following list you should be able to just: - ./Configure -Dusethreads -des + ./Configure -Dusethreads -Duse5005threads -des make and ignore the rest of this "Building" section. If not, continue @@ -38,7 +51,7 @@ from the "Problems" section. * OpenBSD - * NeXTstep, OpenStep (Rhapsody?) + * NeXTstep, OpenStep * OS/2 @@ -55,27 +68,21 @@ you believe supports POSIX.1c threads then read on. Additional information may be in a platform-specific "hints" file in the hints/ subdirectory. -First of all, because threads are such an experimentral feature -there's a failsafe in Configure that stops unknown platforms -from using threads. Search for "is not known to support threads". -About five lines above that is a line that has a list of operating -system names separated with |-signs. Append your operating system -(perl -le 'print $^O') to that list. - -On other platforms that use Configure to build perl, omit the -d -from your ./Configure arguments. For example, use: +On platforms that use Configure to build perl, omit the -d from your +./Configure arguments. For example, use: - ./Configure -Dusethreads + ./Configure -Dusethreads -Duse5005threads When Configure prompts you for ccflags, insert any other arguments in -there that your compiler needs to use POSIX threads. When Configure -prompts you for linking flags, include any flags required for -threading (usually nothing special is required here). Finally, when -Configure prompts you for libraries, include any necessary libraries -(e.g. -lpthread). Pay attention to the order of libraries. It is -probably necessary to specify your threading library *before* your -standard C library, e.g. it might be necessary to have -lpthread -lc, -instead of -lc -lpthread. You may also need to use -lc_r instead +there that your compiler needs to use POSIX threads (-D_REENTRANT, +-pthreads, -threads, -pthread, -thread, are good guesses). When +Configure prompts you for linking flags, include any flags required +for threading (usually nothing special is required here). Finally, +when Configure prompts you for libraries, include any necessary +libraries (e.g. -lpthread). Pay attention to the order of libraries. +It is probably necessary to specify your threading library *before* +your standard C library, e.g. it might be necessary to have -lpthread +-lc, instead of -lc -lpthread. You may also need to use -lc_r instead of -lc. Once you have specified all your compiler flags, you can have Configure @@ -174,8 +181,8 @@ has this fixed but the following patch can be applied to 0.5 for now: Building the Thread extension The Thread extension is now part of the main perl distribution tree. -If you did Configure -Dusethreads then it will have been added to -the list of extensions automatically. +If you did Configure -Dusethreads -Duse5005threads then it will have been +added to the list of extensions automatically. You can try some of the tests with cd ext/Thread