|
|
|
|
|
by slobdell
3549 days ago
|
|
thanks for posting...I will try the implementation you linked to and see the effects on performance. Channels end up locking under the hood as well, so from a purity standpoint I wanted to avoid those...if channels are indeed faster, then clearly I need to rework my approach. |
|
Even "lock free" algorithms can still not scale due to contention. Read this paper for a good summary:
http://queue.acm.org/detail.cfm?id=2991130
In short, a queue is made up of a linked list, where each entry is itself a circular buffer. Insertions go into a circular buffer... unless there's contention, in which case the next circular buffer is used.
The result is that insertions are mostly not contented. Removals are mostly not contented. And it scales very well.