[DUG] A Super Simple Summary of Thread Safe
Matt Comb
matt at ferndigital.com
Mon Jun 20 23:17:38 NZST 2005
I would agree with everything you just wrote, but I'd be labelled a
cheerleader again ;)
Matt.
----- Original Message -----
From: "Kyley Harris" <KyleyHarris at gmail.com>
To: <delphi at ns3.123.co.nz>
Sent: Monday, June 20, 2005 11:06 PM
Subject: [DUG] A Super Simple Summary of Thread Safe
>A couple of simple things related to some of the conversations going on.
>
> 1/ Reading Memory is always threadsafe, unless the memory was freed. If
> you don't use critical sections, you may read the wrong thing, because
> something else overwrote the memory while you are reading it, in full or
> part.
> 2/ Writing to Memory is not threadsafe, because you are altering the
> memory structure, especially in more complex structures such as lists,
> strings, objects etc. Writing to an integer could be considered
> threadsafe, but it probably depends on the compiler, the computer, the
> stack size, the natural integer size, etc etc.. The Purpose of a Critical
> Section is much like a database transaction, to ensure that what you read
> and write is correct at any given time, and to create a hands off
> approach. if you do lots of reading, with few writes, and need speed, use
> a TMultiReadWriteSyncronizer.
>
> 3/ Writing to the VCL GUI controls is only ever safe if the
> CurrentThreadID = MainThreadID. It does not matter if you are reading or
> writing. Why? Most of the controls like TEdit etc are TWinControls.
> TWinControls have a Handle. if you use the handle, or create the handle in
> any thread other than the main one windows will throw silent tantrums and
> simply ruin the stability of your application. This is a design issue.
> Don't expect to find it in the help files, or anywhere really :)
>
> There are plenty more things that you need to do to make sure a GUI
> accessing threaded processing doesn't go down the toilet but I hope this
> helps.
>
> regards
> Kyley.
>
> PS. This may not be 100% semantically accurate, but who has time for that
> in these posts :D
>
> _______________________________________________
> Delphi mailing list
> Delphi at ns3.123.co.nz
> http://ns3.123.co.nz/mailman/listinfo/delphi
>
>
More information about the Delphi
mailing list