On Thu, 27 Aug 2009, Graeme Geldenhuys wrote:
Hi, I first asked this question in the Lazarus mailing list, but was told it may be more appropriate here. When you create a new project in Lazarus, the default uses clause in the *.lpr file looks as follows: --------------- uses {$IFDEF UNIX}{$IFDEF UseCThreads} cthreads, {$ENDIF}{$ENDIF} Classes; --------------- Question 1: Is there an alternative implementation of multi-threading support for Unix-type systems -- other than the cthreads unit?
No.
Question 2: If not, then why do we have the extra "IFDEF UseCThreads" define in the uses clause?
To be able to disable it ?
Mattias mentioned that when cthreads unit is included, all string access needs critial sections which will slow down string access for any unix-type OS. Now because under Windows, threading support is on by default, does that mean the same program will run faster under Linux than under Windows? Why is threading enabled by default under Windows and not under other platforms?
Because it creates a dependency on the C library, which is not always wanted. For Lazarus programs, the dependency exists
anyway, so it does not make a lot of sense to have the define. Michael. _______________________________________________ fpc-pascal maillist - fpc-pascal@lists.freepascal.org http://lists.freepascal.org/mailman/listinfo/fpc-pascal