kubo39's blog

ただの雑記です。

bounded MPMCの実装

sharedの勉強がてらに、Lock-free Queue実装のひとつである制限付きMulti-Producer Mulit-Consumer QueueをD言語で実装してみた。

https://github.com/kubo39/mpmcqueue

このQueueはatomicなread/writeとCAS(当然この操作もatomicだ)のみで操作が行われている。

一番大変なのはテストを書くことだった。当初はstd.concurrency.spawnを使っていたのだが、どうもうまくいかなかったのでcore.threadを使った実装に切り替えた。

参考文献

http://www.1024cores.net/home/lock-free-algorithms/queues/bounded-mpmc-queue

https://blogs.oracle.com/dave/entry/ptlqueue_a_scalable_bounded_capacity