Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: Multithreading question

Author: Andrew Dados

Date: 08:18:51 09/09/03

Go up one level in this thread


On September 09, 2003 at 04:10:53, Tony Werten wrote:

>On September 09, 2003 at 03:21:34, Andreas Herrmann wrote:
>
>>On September 09, 2003 at 02:14:08, Tony Werten wrote:
>>
>>Hi Tony,
>>
>>i have just read inside a Delphi internals book last week a 50 side long capitel
>>about Thread programming. It says that all local vars are save, but pay
>>attention for global vars. See the help to the win api function
>>EnterCriticalSection or the VCL object TCriticalSection as a good starting point
>>to this theme.
>>
>>Andreas
>
>Thanks ( to all)
>
>It seems that "write" is not threadsafe when used for writing to the console. I
>added some checks to make sure only 1 thread is writing at a time. Hope this
>solves the problems.
>
>The problems became worse when I changed from writeln to write which seems
>logic: more time spend in writing so bigger change for collisions.

Better yet: make sure only one thread writes to the console (even more important
for gui stuff). Especially older windows versions can get confused when other
then main thread do some graphical things. (I saw same thing happening with
Kylix in linux, actually). So I think safest solution is to add 1 specialized
thread doing all the output, blocked on waitfor most of the time...

-Andrew-

>
>
>Tony
>
>>
>>
>>
>>>Hi,
>>>
>>>maybe a silly question, but one get quite desperate during debugging. Suppose I
>>>have the followin code:
>>>
>>>procedure whatever(param:integer)
>>>begin
>>>   do_something_heavy_with_param;
>>>end;
>>>
>>>Say, the heavy stuff takes about 10 seconds.
>>>
>>>If during these secs another thread is calling this function, what happens ?
>>>
>>>Does every thread gets a "local copy" of the function ?
>>>
>>>On a single processor, there is a context switch, stuff is pushed on a stack,
>>>and everything is safe.
>>>
>>>What about a dual ? I get the feeling that param is actually changed by the
>>>second call.
>>>
>>>Tony



This page took 0 seconds to execute

Last modified: Thu, 15 Apr 21 08:11:13 -0700

Current Computer Chess Club Forums at Talkchess. This site by Sean Mintz.