[fpc-pascal] writeln in threads on linux

Florian Klaempfl florian at freepascal.org
Sun Jul 2 12:45:42 CEST 2006


Ole J. Røtne wrote:
>  
> Can anyone explain why i get output like this in a small test program:
> Inside Thread
> 		 Main Loop
> Inside Thread
> 		 Main Loop
> Inside Thread
> 		 Main Loop
> 
> 
> On Windows the output are lined up just as I would expect:
> Inside Thread
> Main Loop
> Inside Thread
> Main Loop
> 
> Here's a snip of the code:
> 
> // Main Prog
> 
> Thr := threadtest.Create;
> 
> Repeat
>   k := PollKeyEvent;
>   WriteLn('Mein Loop');
>   Sleep(100);
> Until k <> 0;
> 
> And the ThreadTest.Execute i just:
> 
> Procedure ThreadTest.Execute;
> Begin
>   Repeat
>     WriteLn('Inside Thread');
>     Sleep(100);
>   Until Terminated
> End;
> 
> 
> And if this is a "wrong way" of doing this thing, could someone tell me how
> it should be..

You probably want to guard the output with mutexes or semaphores.
Writing unsynchronized to a stream has always unexpected results.

> 
> Oh and BTW. Using FPC 2.1.1 snapshot from 14.06.06 (from Lazarus site), on
> OpenSuSe 10.1..
> 
> 
> 
> 
> 
> _______________________________________________
> fpc-pascal maillist  -  fpc-pascal at lists.freepascal.org
> http://lists.freepascal.org/mailman/listinfo/fpc-pascal




More information about the fpc-pascal mailing list