Sign in Join

Live chat for Free Pascal, Lazarus, Delphi and every Pascal programmer.

Mailing lists / lazarus / 2017-03

MultiTask library

1 message · 1 person ·

Reply by email Subscribe to this list Your subscription

Read-only archive. Use j and k to move between messages.

Tomáš Emresz

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

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.lazarus-ide.org/pipermail/lazarus/attachments/20170329/debc60d2/attachment-0001.html>

Reply by email