[fpc-devel] StdOut capture for FPC RTL

Marco van de Voort marcov at stack.nl
Thu Nov 25 11:39:44 CET 2010


In our previous episode, Anton Kavalenka said:
> > On 25 Nov 2010, at 10:52, Anton Kavalenka wrote:
> >
> >> Due to incompatibility of RTL between FPC and Delphi my capturing 
> >> tricks not work.
> >> BTW what the real reason to make these files as threadvar?
> >
> > To prevent multiple threads writing to stdin/stdout/sterr at the same 
> > time from corrupting each other's data (all of these text files use an 
> > internal buffer, even when the output is immediately flushed afterwards).
> 
> lock_output();
> try
>    // do something nasty with the buffer
> finally
>     flush(output);
>    unlock_output();
> end;
> 
> There is NO other runtimes on this planet instead FPC RTL which take 
> care of per-thread buffer of output.
> It is programmers duty to lock/flush buffer in multithreaded environments.

Such solutions are fine for slow apps, but in a fast pace, app, this means
that the logging with its locks has a significant impact on the behaviour of
the application.

And IMHO the RTL should be workable for all kinds of apps.



More information about the fpc-devel mailing list