マルチスレッドが必要になった時は、本当にそれが必要なのかどうかを考えたほうが良い。 使わなくて済むならそれに越したことはないし、現にそうやって過ごしてきたので、今さらになって10年以上前に標準ライブラリに追加されたスレッドサポートライブラリについて調べている。 正直 thread と mutex さえ使えれば何とかなるだろうと思っていたが、ライブラリの充実っぷりからして、そんなに甘い世界ではなさそうな気がしてきた。とりあえず std::future と std::promise(とその周辺)についてまとめておく。 future と promise の基本 future を一言で表現すると「そのうち値が現れる転送ボックス」といった感じになる。同様に promise を一言で表現するなら「値を入れると future に転送される箱」となるだろう。 作業スレッドからの結果を呼び出し側のスレッドで