On 26/09/2020 13:35, Martin Frb via fpc-devel wrote:
Unfortunately I do not have Delphi.
Can anyone test this?

I made a test program

If it does not print any "in foo" then it ignores the instance.
Otherwise it should print one "in foo".

Besides of "what Delphi does", what would anyone expect from reading the code?



program Project1;
{$mode objfpc}{$H+}
uses
  {$IFDEF UNIX}  cthreads,  {$ENDIF}  Classes;

type
  TMyClass = class
    procedure Foo;
  end;

  TMyThread = class(TThread)
  public
    procedure Execute; override;
  end;
var
  i: integer;

procedure TMyThread.Execute;
var
  c1, c2: TMyClass;
begin
  c1 := TMyClass.Create;
  c2 := TMyClass.Create;
  Queue(self, @c1.Foo);
  Queue(self, @c2.Foo);
  RemoveQueuedEvents(Self, @c1.Foo);
  inc(i);
end;

procedure TMyClass.Foo;
begin
  writeln('In Foo');
end;

begin
  i := 0;
  TMyThread.Create(False);
  while i = 0 do ;
  CheckSynchronize();
  writeln('Did we get one or none "In Foo"');
  ReadLn;
end.

_______________________________________________
fpc-devel maillist  -  fpc-devel@lists.freepascal.org
https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel

Reply via email to