C++マルチスレッド一巡り読書会vol.13
開催日時
2021年11月24日(水) 19:30~21:00
開催URL
https://cpp-osaka.connpass.com/event/230829/
参加人数
6人
読み進め方
【Chapter 08】
【future<void>】
条件変数と似たような感じがする
なにが違うんだろう?使い分けを知りたい
(追記)「条件変数+ミューテックス+bool変数(false→true遷移のみ)」相当のお手軽代替品というニュアンスでの紹介でした
PromiseとFutureって必ずペアで使うものなの?
どうなんだろう。promiseからfutureが生成されるので、生成しなければpromiseだけの状態になりそう
後で出てくる内容ではpromiseが出てこないケースはあった。【packaged_taskクラス】とか
【タイムアウトサポート】
【packaged_taskクラス】
呼び出す関数をpackaged_taskでラップしている
何が楽になった?
promiseがなくなった
promiseに対するset_valueやset_exceptionを書かなくてもよくなった
【async関数】
最終的にとてもシンプルに
asyncは前に使った気がするけど、知らず知らずにfutureを使ってた
【その他の提供機能】
やりたい非同期が複数あって前後のタスクが依存するような場合、どうしたらいいんだろう?
1つ目のタスクのfutureを2つ目のタスクに持たせて、そこからfutureのgetをする形?(やったことないからわからないけど)
【C++標準ライブラリで出来ないこと】
さっきの話は今後を待ちましょうということかな?(Then操作)
今日はここまで
次回は9章【ラッチとバリア同期】から読み進めます
お悩み雑談室
特になかったのでさっきの項目で気になることを各自調べていた
Then操作とかWhenEny操作とか
英語のcppreferenceにWhenEny操作の関数が書かれていた
https://en.cppreference.com/w/cpp/experimental/when_any
experimentalだから実験的なものかな
(追記)when_any等はConcurrencyTS拡張の機能ですが、C++23向け議論をみる限り標準入りする雲行きは怪しいですね...
独自で作った実装っぽいもの
https://github.com/mongodb/mongo/blob/master/src/mongo/util/future.h
Then操作を自前で実装するとしたらこんなコードになるのかな
https://wandbox.org/permlink/Zozjbhk1pF8ekoi4
#C++マルチスレッド一巡り