zoukankan      html  css  js  c++  java
  • 德尔福 基础

    并行

    http://docwiki.embarcadero.com/RADStudio/Tokyo/en/Using_TParallel.For_from_the_Parallel_Programming_Library

    Using TParallel.For from the Parallel Programming Library

     

    Go Up to Using the Parallel Programming Library


    The Parallel Programming Library (PPL) includes a loop function, TParallel.For, that allows to run its loops in parallel.

    Within parallel loops, you must transform your operations into thread-safe operations. You can use members of the System.SyncObjs unit, such as TInterlocked methods.

    Converting a For Loop into a TParallel.For Loop

    Delphi:

    For LoopTParallel.For Loop
    for I := 1 to 10 do
    begin
      // …
    end;
    
    TParallel.For(1, 10, procedure(I: Integer)
      begin
        // …
      end);
    

    C++:

    If you are using a Clang-enhanced C++ compiler, you can use lambda expressions:

    For LoopTParallel.For Loop
    for (int i = 1; i <= 10; i++) {
      // …
    }
    
    TParallel::For(0, 10, TProc1<int>([](int I){
      // …
    }));
    

    You can alternatively use a functor, which works with both previous-generation compilers and Clang-enhanced compilers:

    For LoopTParallel.For Loop
    for (int i = 1; i <= 10; i++) {
      // (Loop logic)
    }
    
    class TMyFunctor : public TCppInterfacedObject<TProc__1<int> > {
    public:
      void __fastcall Invoke(int I) {
        // (Loop logic)
      }
    };
    
    // …
    
    TParallel::For(1, 10, System::DelphiInterface<TProc__1<int> >(new TMyFunctor()));
    

    If the loop needs access to one or more variables from the context outside the callback function, you must use a functor as follows:

    1. Declare variables in the functor class to hold copies or references to the variables that you need.
    2. Declare a constructor of the functor class that accepts the copies or references to those variables as parameters and initializes the corresponding functor variables with their values.
    3. Pass those variables to the contructor when you instantiate the functor.
    4. In your logic, in Invoke(), you can access those functor variables.

    For example:

    class TMyFunctor : public TCppInterfacedObject<TProc__1<int> > {
    public:
      TMyFunctor(int a, TB *b) : a(a), b(b) {}
      void __fastcall Invoke(int I) {
        // (Loop logic)
      }
      int a;
      TB *b;
    };
    
    // …
    
    TParallel::For(1, 10, System::DelphiInterface<TProc__1<int> >(new TMyFunctor(a, b)));





    分类方法

     TTest = class;
     
     // Declaring metaclass type
     TTestClass = class of TTest;
     
     TTest = class
     public
       // Class methods
       class function add(I, J: Integer): Integer;
       class function GetClsName: string;
     
       // Virtual class method
       class function GetClsNameVirt: string; virtual;
     
       // Class getter and setter
       class function GetCount: Integer;
       class procedure SetCount(I: Integer);
     
       // Virtual class getter and setter
       class function GetStrProp: string; virtual;
       class procedure SetStrProp(N: string); virtual;
     
       // Class static
       class function GetStaticCount: Integer; static;
       class procedure SetStaticCount(I: Integer); static;
     
       // Class properties
       property Count: Integer read GetCount write SetCount; // Non-virtual
       property StrProp: string read GetStrProp write SetStrProp; // Virtual g/setters
     end;
     
     // Function that takes a class reference
     function RegisterTestType(Cls: TTestClass): boolean;




    基本句法元素(Delphi)


    http://docwiki.embarcadero.com/RADStudio/Tokyo/en/Fundamental_Syntactic_Elements_(Delphi)

    程序和功能(德尔福)

     

     http://docwiki.embarcadero.com/RADStudio/Tokyo/en/Procedures_and_Functions_(Delphi)

    表达式(德尔福)

    http://docwiki.embarcadero.com/RADStudio/Tokyo/en/Expressions_(Delphi)

    编译器属性  volatile

    http://docwiki.embarcadero.com/RADStudio/Tokyo/en/Compiler_Attributes#Volatile

     

    System.TimeSpan.TTimeSpan

     http://docwiki.embarcadero.com/Libraries/Tokyo/en/System.TimeSpan.TTimeSpan

    使用并行编程库

    http://docwiki.embarcadero.com/RADStudio/Tokyo/en/Using_the_Parallel_Programming_Library

    简单类型(Delphi)

    http://docwiki.embarcadero.com/RADStudio/Tokyo/en/Simple_Types_(Delphi)

     
  • 相关阅读:
    使用序列化实现对象的拷贝
    SQL连接查询深度探险
    关于ArrayList和Vector区别
    list_arrayList三种遍历性能比较
    Java过滤器与SpringMVC拦截器之间的关系与区别
    遍历map 哪种方式更加高效。
    Http请求中Content-Type讲解以及在Spring MVC中的应用
    sql语句练习50题
    在js中初始化select数据
    java浮点数剖析
  • 原文地址:https://www.cnblogs.com/marklove/p/9503194.html
Copyright © 2011-2022 走看看