[fpc-pascal] TThread.FreeOnTerminate

OBones obones at free.fr
Fri Dec 14 11:21:53 CET 2018

Michael Van Canneyt wrote:
>>> I think FreeOnTerminate should not even exist. IMO it should simply 
>>> be 'True'.
>> This is where I strongly disagree, to me it should always be False, 
>> because having things free up themselves at unpredictable times is a 
>> recipe for disaster which already hit me badly.
>> For instance, if a thread is still running when a DLL unloads, you 
>> get deadlocks. Of if a thread finishes after the memory manager has 
>> been unloaded, you are in for a hellish shutdown.
> The opposite problem is just as bad: you cannot guarantee that you can 
> shut
> down a thread properly, because you have no idea of the state it is on.
This is why all my threads are written to be "stoppable". This requires 
a bit of thinking when writing them, but it's not that hard.

>> All this leads me to believe that FreeOnTerminate should always be 
>> left to False, even if I can understand it's usefulness in some very 
>> specific cases.
> And now we have come to the root of the problem:
> Threads are unpredictable, and hence evil in programming :-)

Like all powerful tools, if you use them without knowing them, they can 
hurt you badly.
But I would not prevent anyone from using a pillar drill just because I 
once cut through my finger because I was careless when using it...

More information about the fpc-pascal mailing list