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...
_______________________________________________
fpc-pascal maillist - fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal