Low Latency Primitive Concurrent Queues

An low latency, lock free, primitive bounded blocking queue backed by an int[]. This class mimics the interface of {@linkplain java.util.concurrent.BlockingQueue BlockingQueue}, however works with primitive ints rather than objects, so is unable to actually implement the BlockingQueue. This class takes advantage of the Unsafe.putOrderedObject, which allows us to create non-blocking code with guaranteed writes. These writes will not be re-orderd by instruction reordering. Under the covers it uses the faster store-store barrier, rather than the the slower store-load barrier, which is used when doing a volatile write. One of the trade off with this improved performance is we are limited to a single producer, single consumer.

License

License

GroupId

GroupId

uk.co.boundedbuffer
ArtifactId

ArtifactId

low-latency-primitive-concurrent-queues
Last Version

Last Version

1.0.0
Release Date

Release Date

Type

Type

jar
Description

Description

Low Latency Primitive Concurrent Queues
An low latency, lock free, primitive bounded blocking queue backed by an int[]. This class mimics the interface of {@linkplain java.util.concurrent.BlockingQueue BlockingQueue}, however works with primitive ints rather than objects, so is unable to actually implement the BlockingQueue. This class takes advantage of the Unsafe.putOrderedObject, which allows us to create non-blocking code with guaranteed writes. These writes will not be re-orderd by instruction reordering. Under the covers it uses the faster store-store barrier, rather than the the slower store-load barrier, which is used when doing a volatile write. One of the trade off with this improved performance is we are limited to a single producer, single consumer.

Download low-latency-primitive-concurrent-queues

How to add to project

<!-- https://jarcasting.com/artifacts/uk.co.boundedbuffer/low-latency-primitive-concurrent-queues/ -->
<dependency>
    <groupId>uk.co.boundedbuffer</groupId>
    <artifactId>low-latency-primitive-concurrent-queues</artifactId>
    <version>1.0.0</version>
</dependency>
// https://jarcasting.com/artifacts/uk.co.boundedbuffer/low-latency-primitive-concurrent-queues/
implementation 'uk.co.boundedbuffer:low-latency-primitive-concurrent-queues:1.0.0'
// https://jarcasting.com/artifacts/uk.co.boundedbuffer/low-latency-primitive-concurrent-queues/
implementation ("uk.co.boundedbuffer:low-latency-primitive-concurrent-queues:1.0.0")
'uk.co.boundedbuffer:low-latency-primitive-concurrent-queues:jar:1.0.0'
<dependency org="uk.co.boundedbuffer" name="low-latency-primitive-concurrent-queues" rev="1.0.0">
  <artifact name="low-latency-primitive-concurrent-queues" type="jar" />
</dependency>
@Grapes(
@Grab(group='uk.co.boundedbuffer', module='low-latency-primitive-concurrent-queues', version='1.0.0')
)
libraryDependencies += "uk.co.boundedbuffer" % "low-latency-primitive-concurrent-queues" % "1.0.0"
[uk.co.boundedbuffer/low-latency-primitive-concurrent-queues "1.0.0"]

Dependencies

compile (2)

Group / Artifact Type Version
org.mockito : mockito-core jar 1.9.5
com.sun.japex : japex-maven-plugin jar 1.2.4

test (2)

Group / Artifact Type Version
junit : junit jar 4.8.2
com.sun.japex : japex jar 1.2.4

Project Modules

There are no modules declared in this project.

Versions

Version
1.0.0