[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