[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