?? 25.11.2010 12:01, Jonas Maebe ???????(??):

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).


Jonas


_______________________________________________
fpc-devel maillist  -  fpc-devel@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-devel
Is not the better way to use something like this:

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.

If FPC wants to be so nice - let's introduce critical section in output structure. Any outputs would be suspended until a thread acquires it by write operation.

regards,
Anton
_______________________________________________
fpc-devel maillist  -  fpc-devel@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-devel

Reply via email to