Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.programming.threads > #2137
| From | aminer <aminer@toto.net> |
|---|---|
| Newsgroups | comp.programming.threads, comp.programming |
| Subject | Re: Scalable and relaxed MPMC priority Queue was updated to version 1.06... |
| Date | 2014-04-04 15:35 -0700 |
| Organization | albasani.net |
| Message-ID | <lhnc0r$fb4$4@news.albasani.net> (permalink) |
| References | <lhnbru$fb4$1@news.albasani.net> |
Cross-posted to 2 groups.
On 4/4/2014 3:32 PM, aminer wrote: > > Hello, > > My scalable and relaxed MPMC priority Queue was updated to version 1.06 > now when there is no items in the queue it stills from the other queues Sorry , i mean it steals , not still. > in a round robin manner. > > > Author: Amine Moulay Ramdane > > > Description: > > A scalable and relaxed MPMC priority Queue. > > Relaxed means not a strict FIFO, but it's almost a strict FIFO, it > processes the jobs in a FIFO order in each queue, and when there is no > items in the queue the thread stills from the other queues in a round > robin manner, that's good. > > Where can my scalable and relaxed MPMC priority Queue be useful ? > > When for example you want to do something like a threadpool that do > parallel tasks, and you can find that in many applications that do > parallel mathematical calculations or parallel mechanical or graphic > calculations and many parallel tasks... so you will reduce on those > applications the S part in the Amdahl equation using my scalable and > relaxed MPMC priority Queue. > > The number of consumer threads and the number of producers must be > equal to the number of queues that you pass to the constructor so that > it become scalable, and you have to initialize first the Push() method > with high(pqueue.long), look at how to do it inside the test1.pas > example inside the zip file. > > The following have been added: > > - You can give the following priorities to jobs: > > LOW_PRIORITY > NORMAL_PRIORITY > HIGH_PRIORITY > > - A queue for each worker thread and it uses work-stealing - for more > efficiency - > > - Enters in a wait state when there is no job in the queue - for more > efficiency - > > - Uses O(1) complexity on enqueue and O(3) worst case complexity on > dequeue. > > Look into defines.inc there is many options: > > CPU32: for 32 bits architecture > CPU64: for 64 bits architecture > > Look test.pas and at test1.pas examples inside the zip file that shows > you that my PQueue is scaling. > > Required FPC switches: -O3 -Sd -dFPC -dWin32 -dFreePascal > > -Sd for delphi mode.... > > Required Delphi switches: -DMSWINDOWS -$H+ > > For Delphi 5,6,7 use -DDelphi > > > > Thank you, > Amine Moulay Ramdane. > >
Back to comp.programming.threads | Previous | Next — Previous in thread | Find similar | Unroll thread
Scalable and relaxed MPMC priority Queue was updated to version 1.06... aminer <aminer@toto.net> - 2014-04-04 15:32 -0700 Re: Scalable and relaxed MPMC priority Queue was updated to version 1.06... aminer <aminer@toto.net> - 2014-04-04 15:35 -0700
csiph-web