The first is MIT Threads. This doesn't support Squid-1.2
properly.
The second is Linux-Threads. This is what you need if you
are running libc-5, but there will be some funnies, as described
below.
The third is GNU LibC6. This is what comes with RedHat 5. It
actually includes Linux-Threads, but the actual C-Library is
thread-aware.
The easiest way to check is to run ldconfig -v (as root) and pipe it through less. Look for the word threads in the output and find the last occurrence in the output. If it says "libpthread.so.0 => libpthread.so.0.7" then it's Linux-Threads. If it says "libpthreads.so.1 => libpthreads.so.1.60.4" (or some other similar version number) it's MIT threads, and you need to install Linux-Threads.
LinuxThreads has problems with various libc-5 libraries (that's why it's a good idea to run libc-6... but I haven't managed to get it to install properly). This means that you should check which libc you are running (it's in the ldconfig output...) and look here to see if your libc is supported.
Squid uses the signals USR1 and USR2 for internal functions (max-debugging and log-rotation respectively). Unfortunately LinuxThreads uses these for various thread functions. There is a fix in the FAQ but it involves re-compiling the threads library... which is actually quite straight forward..
Squid-1.2 knows that Linux doesn't normally work with SIGUSR and threads. Once you include the patched threads library you need to edit src/main.c and remove that... to do that, go to about line 507 and change:
#if !(defined(_SQUID_LINUX_) && USE_ASYNC_IO)
squid_signal(SIGUSR1, rotate_logs, SA_RESTART);
squid_signal(SIGUSR2, sigusr2_handle, SA_RESTART);
#endif
TO
/*oskar #if !(defined(_SQUID_LINUX_) && USE_ASYNC_IO) oskar*/
squid_signal(SIGUSR1, rotate_logs, SA_RESTART);
squid_signal(SIGUSR2, sigusr2_handle, SA_RESTART);
/*oskar #endif oskar*/
As to the threads:
Sure... have a look at ftp.is.co.za for the library that I use without problems. Note that this includes the SIGUSR patch above, and as the note that is in that file says... use it at your own risk. (It should work on Intel machines...).
Install the original linuxthreads... that sorts out the header-files and so on. If you already have it installed, but without the SIGUSR patches, shut down to single-user mode (boot with "linux single" at the lilo prompt) and proceed as follows.
If you have the old linuxthreads library, move it to a temporary place (the current location is in the output of "ldconfig -v"... make a note of it before booting in single-user mode if you have to). Copy the new linuxthreads into the old ones place. Run "ldconfig -v" to see if it is in the right place. Note that this may not work in some strange distributions that run threaded programs in single-user mode. Recompile Squid-1.2 and see what happens!