It will never throw an exception, but it will never be thread safe either.
Unless you are using the Interlocked* functions no datatype is
threadsafe on a modern processor(except for reference counting of
ansistrings, dynamic arrays, and interfaces; and all those use
Interlocked* functions under the hood).
Use semaphores or events instead if you need something fast, thread
safe, and responsive.
Den 04-06-2014 21:41, m...@rpzdesign.com skrev:
I thought I had publicly declared what I wanted to do.
Here is the example code again for ease of reference:
Type
Class TTest(TObject)
public
nflag : integer ;
sflag : string[30]
end;
Gui Thread
gtest := TTest.Create ;
Thread #1 - Constantly changing values
while true do
begin
gtest.nflag := Random($FFFFFFFF) ;
gtest.sflag := inttostr(gtest.nflag) ;
end;
Thread #2 - Constantly Comparing values
While true do
begin
if gtest.nflag = 777888 then
begin
break ;
end;
//Test string matching instead of integer matching
if gtest.sflag = '123456' then
begin
LaunchSpaceShuttle(gtest) ;
end;
end;
Will this code be thread safe in terms of the gtest.sflag = '123456'
line never throw an exception because it is referring to stable memory
that is always less than 31 bytes.
Cheers,
marco
On 6/4/2014 3:27 PM, Mattias Gaertner wrote:
On Wed, 04 Jun 2014 15:03:31 -0400
"Saunders, Rich" <greym...@mykolab.com> wrote:
[...]
Whether static variables are more or less thread safe is for you to
decide since you know what you are doing with them. I don't think either
short strings or Strings are inherently more or less thread safe. It
depends on what you do with them.
No data is "thread safe". Only code can be thread safe.
Mattias
_______________________________________________
fpc-pascal maillist - fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal
_______________________________________________
fpc-pascal maillist - fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal
_______________________________________________
fpc-pascal maillist - fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal