[Lazarus] MultiTask library

classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

[Lazarus] MultiTask library

Free Pascal - Lazarus mailing list

Hello,

i would like to present my own library which can be used as single thread to multithread application move.

Some description is on my github url : https://github.com/tomas-raul/MultiTask


For example, you have simple methods like

LoadImage(Fn : string);

and this method you run over and over - for some image tranformation f.e. with this :

for i := 1 to 100 do

 LoadImage(ItToStr(i)+'.jpg');

With my library (and the precompiler) - you can do the same with multithread like :

for i := 1 to 100 do

 LoadImage_MT_LOW(ItToStr(i)+'.jpg'); // this run this method in MultiTask environment with LOW priority (this is not thread priority, but place in task queue).

Today update is - integrated precompiler, which you can run from before build event and it create adekvate methods, and somethink else..

Precompiler show you help by -h param :D

Precompiler adds :

procedure Load_Image_MT( const id : integer;  const item : iSuperObject;  const fn : string);
 procedure Load_Image_MT_Last( const id : integer;  const item : iSuperObject;  const fn : string);
 procedure Load_Image_MT_Low( const id : integer;  const item : iSuperObject;  const fn : string);
 procedure Load_Image_MT_Normal( const id : integer;  const item : iSuperObject;  const fn : string);
 procedure Load_Image_MT_High( const id : integer;  const item : iSuperObject;  const fn : string);
 procedure Load_Image_MT_ASAP( const id : integer;  const item : iSuperObject;  const fn : string);
 procedure Load_Image_MT_Unique( const id : integer;  const item : iSuperObject;  const fn : string);
 procedure Load_Image_MT_Unique_Last( const id : integer;  const item : iSuperObject;  const fn : string);
 procedure Load_Image_MT_Unique_Low( const id : integer;  const item : iSuperObject;  const fn : string);
 procedure Load_Image_MT_Unique_Normal( const id : integer;  const item : iSuperObject;  const fn : string);
 procedure Load_Image_MT_Unique_High( const id : integer;  const item : iSuperObject;  const fn : string);
 procedure Load_Image_MT_Unique_ASAP( const id : integer;  const item : iSuperObject;  const fn : string);

For your code :

  tIQDeploy_v4 = class(TObject) {class_MT}
   published
   {$I MT_onNewWork.inc}
    procedure Load_Image(const id: integer; const item: iSuperObject; const fn: string); {gen_MT}
  {$I MT_def.inc}
  end;


implementation

{$I MT_impl.inc}


Tomas


--
_______________________________________________
Lazarus mailing list
[hidden email]
http://lists.lazarus-ide.org/listinfo/lazarus
Loading...