promiseに似てるけど、全く違うものはerrgroup.Groupと呼ばれます。これもpromiseなんぞと比べれば
コンテキストなどと組み合わせキャンセルやタイムアウト処理が容易にできますし、実行順の制御や包括した
エラー処理以外にパイプラインまで簡単に拡張できます。
例1:ページをフェッチして全ての処理が終わるまで待つグループ制御(1つでもエラーならエラー処理)
https://pkg.go.dev/golang.org/x/sync/errgroup#example-Group-JustErrors
例2:単純な並列タスクを同期するためのグループ制御
https://pkg.go.dev/golang.org/x/sync/errgroup#example-Group-Parallel
例3:多段ステージを設けたパイプライン処理をグループ制御
https://pkg.go.dev/golang.org/x/sync/errgroup#example-Group-Pipeline
例1、例2はJSでいうPromise.all() のような動きをしますがpromiseなんていう融通の利かない非同期のため
だけの劣った機能より格段にシンプルな仕組みです。
上の例でいえば、並列タスクなどではchannelを使用せず、複数起動された軽量ルーチェンから元ルーチェンへ
results配列の結果を戻していますが、これは並列タスクが一段で終わるからです。
次の(例3の)pipeline処理にあるように、並列と並列が連鎖する多段処理においてはchannelのような
仕組みを使うのがとても合理的です。もちろん、処理の終わりの同期のために、selectによる結果受信待ちは
入りますがこれはデットロックではありません
もともとJSのPromiseがなぜあるかといえば、同じプロセス空間で疑似的な非同期処理による実行制御を行うため
だけの仕組みです。このため、特定の変数(結果を格納する配列や変数)に同時にアクセスされるという考えは
ありませんし、そのような(ロックや待ち)制御は必要ありません。現実に同時に動いていないのですから
隣国のアジア人コミュニティに「ストローマン論法」という言葉を連呼するキチガイ集団がいましたが、本当のバカだった
探検
Go language part 5
■ このスレッドは過去ログ倉庫に格納されています
617デフォルトの名無しさん
2022/09/09(金) 15:59:29.38ID:WCKL/dzA■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 台湾有事での集団的自衛権行使に賛成48%、「反対」が44.2% [♪♪♪★]
- 中国「国連安保理の許可なしに日本攻撃可能」 Xで旧敵国条項に言及… ★12 [BFU★]
- 中国・国連大使「日本側は反省せず、発言の撤回拒否」 書簡を国連事務総長に送る [♪♪♪★]
- 首相官邸前で「戦争あおるな」 台湾有事巡る答弁に抗議 ★3 [蚤の市★]
- 中国「国連安保理の許可なしに日本攻撃可能」 Xで旧敵国条項に言及… ★13 [BFU★]
- 【NHK】受信料の未払い督促を10倍に強化… 支払い拒否が続くと民事手続きも 「カーナビも受信料いただきます」方針 [冬月記者★]
- 他サポ 2025-260
- 【フジテレビ】2025 FORMULA 1【NEXT】Lap600
- 【DAZN】フォーミュラGP【F1 2 3 SF P】Lap1807
- 京都競馬4回5日目エリザベス女王杯★3
- 2025 SUPER FORMULA Lap18
- 福島競馬3回5日目
- 中国駐日大使館「釣魚島とその付属島嶼は中国固有の領土」愛国者ブチギレへ [834922174]
- 【実況】博衣こよりのえちえちゼルダの伝説 ムジュラの仮面🧪 ★4
- 日本人の48%覚悟完了… [819729701]
- 【悲報】ネトウヨが愛する皇土を破壊した「原子力発電」の再稼働を願う理由、誰にもわからない🥺 [616817505]
- 小野田大臣「それ正式なデータですか?報道ベースですよね」(10万いいね) [237216734]
- 🏡🏡😅🏡🏡
