Hmm.... the last time I checked this was anonymous methods... Are you sure I 
was talking closures?

FThread1.Process(
    procedure()
    var
      ANewText1 : String;

    begin
      Sleep( 500 ); // Simulate thread busy doing time consuming task
      ANewText1 := AText + ' + Thread1';

      FThread2.Process(
          procedure()
          var
            ANewText2 : String;

          begin
            Sleep( 500 ); // Simulate thread busy doing time consuming task
            ANewText2 := ANewText1 + ' + Thread2';

            FThread3.Process(
                procedure()
                var
                  ANewText3 : String;

                begin
                  Sleep( 500 ); // Simulate thread busy doing time consuming 
task
                  ANewText3 := ANewText2 + ' + Thread3';

                  FThread4.Process(
                      procedure()
                      var
                        ANewText4 : String;

                      begin
                        Sleep( 500 ); // Simulate thread busy doing time 
consuming task
                        ANewText4 := ANewText3 + ' + Thread4';

                        MainThreadExecute(
                            False
                          ,
                            procedure()
                            begin
                              Memo1.Lines.Add( 'Ended Processing: ' + 
ACounter.ToString() + ' - Result:' );
                              Memo1.Lines.Add( ANewText4 );
                              Memo1.Lines.Add( '' );
                              Dec( FInProccessingCount );
                              Label1.Caption := 'In processing pipeline = ' + 
FInProccessingCount.ToString();
                            end
                          );

                      end
                    );
                end
              );

          end
        );

    end
  );


This is a 4 stage pipeline with asynchronous main thread printing.
I dare somebody to implement it in less than 5-6 times more code with 
traditional methods, and while matching the performance...

With best regards,
Boian Mitov

-------------------------------------------------------
Mitov Software
www.mitov.com
-------------------------------------------------------

From: Dmitry Boyarintsev 
Sent: Saturday, September 20, 2014 7:46 PM
To: FPC developers' list 
Subject: Re: [fpc-devel] Suggestion: reference counted objects

To be more accurate.. 
You're talking about "closures". The difference between closures and anonymous 
functions is explained here: 
http://en.wikipedia.org/wiki/Closure_(computer_programming)#History_and_etymology
 the second paragraph. 

thanks,
Dmitry




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

Reply via email to