Hi,

While investigating http://bugs.freepascal.org/view.php?id=14335 I ran into the following peculiarities. Please, comment and tell for which item you want bug reports, if any. I tested on i386-linux.

1. The docs of GetThreadId seems to contain a typo:
http://lazarus-ccr.sourceforge.net/docs/rtl/system/getthreadid.html
"GetThreadID returns the current process ID." -> should be thread ID.

2. The docs of MainThreadID say it is unused. But it is used in 
TThread.Synchronize.
http://lazarus-ccr.sourceforge.net/docs/rtl/classes/mainthreadid.html

Given the following program:
program project1;

{$mode objfpc}{$H+}

uses
  //cthreads,
  Classes;

begin
  writeln('GetThreadID=', GetThreadID);
  writeln('GetCurrentThreadID=', GetCurrentThreadId);
  writeln('MainThreadID=', MainThreadID);
end.

3. If cthreads is not used, all values are 1. No problem with that, although I am not sure those are real thread id, at least on i386-win32 the value changes on each run, e.g. 1908, 576, maybe because threadmanager is already included in windows. Anyway, this is not a problem, as long as they all have the same value in a single threaded application

If cthreads is used, I get the following output:
GetThreadID=3084795456
GetCurrentThreadID=3085236992
MainThreadID=3085236992

4. What is the difference between GetThreadID and GetCurrentThreadID? This code runs in the same thread, so I expect the same value.

Vincent
_______________________________________________
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-pascal

Reply via email to