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