the Disruptor framework vs The Complexities of Concurrency

Nick B nick.barbalich at gmail.com
Thu Dec 13 15:32:43 PST 2012


On Thursday, 13 December 2012 at 16:07:13 UTC, Dmitry Olshansky 
wrote:
> 12/13/2012 4:59 AM, David Piepgrass пишет:
>>> Maybe, but I'm still not clear what are the differences 
>>> between a
>>> normal ring buffer (not a new concept) and this "disruptor" 
>>> pattern..
>>
>> Key differences with a typical lock-free queue:
>
> But for start I'd define it is a framework for concurrent 
> processing of a stream of tasks/requests/items on a well 
> structured multi-staged pipeline.
> 
   An excellent one sentence description!

>> [snip]

> There is also highly flexible (policy-based design) selection 
> of how consumers wait on data:
> - either busy _spin_ on it thus getting the highest 
> responsiveness at the cost of wasted CPU cycles
> - lazy spin (that yields) no outright burning of CPU resources 
> but higher latency
> - and even locking with wait-notify that saves greatly on CPU 
> but kills responsiveness and throughput (but gives freedom to 
> spend CPU elsewhere)
>
> Thanks for pointing this out.

[snip]
>
> Another important IMHO observation is that the order of 
> processed items is preserved* and this is interesting property 
> if you consider doing the same stages as lock-free queues with 
> a pool of consumers at each stage. Things will get O-o-O very 
> quickly.


what does O-o-O mean ? >

Nick


More information about the Digitalmars-d mailing list