From: aminer on 27 Mar 2010 12:48 Hello all, I have updated Threadpool to version 1.3 - a stable version - Lock-free ParallelQueuerb and lock-free RingBuffer have been added Author: Amine Moulay Ramdane Language: FPC Pascal v2.2.0+ / Delphi 5+: http://www.freepascal.org/ Operating Systems: Win , Linux and Mac (x86). Description: Lock-free Thread Pool Engine. The following have been added: -- Lockfree ParallelQueue for less contention and more efficiency or it can use lockfree_mpmc - flqueue that i have modified, enhanced and improved... - ... - It uses a lock-free queue for each worker thread and work- stealing - for more efficiency - - The worker threads enters in a wait state when there no job in the lock-free queues - for more efficiency - - You can distribute your jobs to the worker threads and call any method with the threadpool's execute() method. Look into defines.inc there is many options: ParallelQueue: it uses lock-free ParallelQueue - very efficient - Lockfree_MPMC: it uses lockfree_MPMC ParallelQueuerb: it uses lock-free ParallelQueuerb (New) RingBuffer: it uses lock-free RingBuffer (New) SINGLE_PRODUCER: for a single producer (thread) MUTIPLE_PRODUCER: mutiple producer (threads) CPU32: for 32 bits architecture Required FPC switches: -O3 -Sd -dFPC -dWin32 -dFreePascal -Sd for delphi mode.... Required Delphi switches: -DMSWINDOWS -$H+ For Delphi 5,6,7 use -DDelphi For Delphi 2005,2006,2007,2009,2010+ use the switch -DDELPHI2005+ Please look at the examples test.pas,test_pool.pas and test_thread.pas insode the zip... Note: test_pool.pas does require Delphi 5+, test.pas and test_thread.pas works with both FreePascal and Delphi You can download the new and stable version 1.3 from: http://pages.videotron.com/aminer/ My Threadpool is VERY easy to use, and here is a page that i wrote about it: http://pages.videotron.com/aminer/threadpool.htm Sincerely, Amine Moulay Ramdane.
From: aminer on 28 Mar 2010 12:37 Skybuck Flying wrote: > I would like to see performance comparisions, against > Delphi's own TThread and/or other windows methods ? > [...] > and why your Thread Pool Engine would be better might also help ;) And how will you load balance the workload efficiently, and also minimize contention... and not start threads for each job... .... with just TThread ? Please read again: http://pages.videotron.com/aminer/threadpool.htm My Threadpool is very efficient and very easy to use... Take care.. Sincerely Amine Moulay Ramdane.
From: aminer on 28 Mar 2010 20:17 Hello, Skybuck Flying wrote: >I implemented my own "blocking queue" using semaphares and critical section >(mutex). [...] I don't think blocking queues are as efficient as lock-free queues Just look at the difference between three lock-free algorithms http://pages.videotron.com/aminer/parallelqueue/parallelqueue.htm You can easily notice the difference between those lock-free algorithmns just by setting the options in defines.inc and runnning test_thread1.pas Now, just imagine what will be the difference between a lock and a lock-free algorithm.? i really think lock-free algorithms are very efficient. >Also your code's layout/indentation looks very bad... >(at least some of the test programs look bad)... Common ! the code is not so bad.. And also, i give much more importance to 'logic' than to code.. >Also your code seems to use all kinds of external dll's/libraries... >which is undesirable... this could also lead to security risks... >what's inside the dll's ?!? Virus/trojans maybe ? I have just used the TBB memory manager in Delphi - look at cmem.pas inside the zip - you can - if you want - download them yourself from the intel website... >Furthermore your source code uses assembler here >and there where it might or might not be necessary... >like "cas"... windows already have methods for >"interlock exchange" and what not... I have decided to put the assembler code for educational purpose also... >Your most interesting unit so far is the parallel hash list... >hashes might not always be usefull though... but still it >could be interesting. I also love ParallelHashList... >Might be a lot of work for you... so I understand if you >don't want to do that... :) Amine Moulay Ramdane.
From: aminer on 28 Mar 2010 21:31 Skybuck Flying wrote: >I implemented my own "blocking queue" using semaphares and >critical section (mutex). >The algorithm for the blocking queue is on wikipedia. Also, i have used in my Thread Pool Engine not just one queue but many lock-free queues - for each worker thread - to minimize contention... and work-stealing to load balance the workload efficiently... http://pages.videotron.com/aminer/threadpool.htm Amine Moulay Ramdane.
|
Pages: 1 Prev: Thread Pool Engine, and Work-Stealing Next: The answer is "All of it." of course. |