本記事はアドベントカレンダ https://adventar.org/calendars/4560 の記事です。 18日目担当のつかさです。 最近 C++ でのマルチスレッドプログラミングの勉強としてリングバッファを実装したので、せっかくなら後で見直せるようにまとめておこう!ということでその記事を書こうと思います。 リングバッファとは まずリングバッファは何かというと、その名の通り下図のような「リング状のバッファ」のことをいいます。 引用: リングバッファ(Wikipedia) 要は輪っかになっているキュー(配列)ですね。ただ実際のキューは直線状なので、 $ bufferi % buffer_size のようにインデックスをバッファサイズで割って正規化する操作をします。こうすることで末端の次のインデックスが先頭にくるようにできます。 また、バッファにデータを出し入れする際は FIFO (F