Boost.Lockfree - ringbufferがなくなっていた

公開:2013-04-03 20:41
更新:2017-09-22 05:40
カテゴリ:boost,c++,windows

Boost.Lockfreeが1.53.0から入ったのだけれど、ringbufferがなくなっていた。いやなくなっているのではなくて「spsc_queue」に名前が変わり、インターフェースがSTLコンテナ風に変わったのだ。enqueueがpushに、dequeueがpopなど。でもSTLのqueueとかとは実際の動作は異なる。そういう意味ではenqueue\dequeueのほうが良かったように思う。あとなぜかresetという、リングバッファを空にするメソッドがなくなってしまった。これも代替メソッド案を考えなくてはならないね。ループでpopするようにしたりとか。これも汎用性を高めるための措置なのだろうか。

昔のメソッドの方がキューっぽくてよかったと思うんだよね。push/popはやっぱりスタックのイメージが強い。vectorもほんとはpush_backよりもappendのほうがわかりやすいようにも思う。コンテナ間で移植性を高めるために意図的にメソッド名を統一しているのだと思うけれども、コンテナの差し替えってあんまりやるケースってないような。それよりもメソッド名で動作を誤解することのほうが多いような気もするね。メソッド名は動作と一致させるとかそのコンテナで一般的に使われる用語でやったほうが直感的でいいように思ったりする。