[Lazarus] Why is there a define switch UseCThreads?

Bo Berglund bo.berglund at gmail.com
Sun Nov 10 23:29:11 CET 2019


I have ported a console application from Windows to Linux (Raspbian
Buster) and I got to wonder about the check for a defined symbol
appearing in the beginning of the code as produced by the Lazarus
template:

uses
  {$IFDEF UNIX}{$IFDEF UseCThreads}
  cthreads,
  {$ENDIF}{$ENDIF}

Would it not be enough to use this instead:
uses
  {$IFDEF UNIX}
  cthreads,
  {$ENDIF}

Is there a heavy hit on perfortmance or such if the conditional is not
used but instead just checking if we are on UNIX?

What happens if one does not use threads in ones code but removes the
conditional UseCThreads as shown above?

For example if I am using Indy10 objects they are threaded so in that
case I assume I need to use cthreads. But in any other case, how can I
know that some used package might rely on threads and so needs this
uses clause?

Basically:
What damage does it do if cthreads are in the uses clause but no
thread appears in the program code (yet)?


-- 
Bo Berglund
Developer in Sweden



More information about the lazarus mailing list