はじめに
非同期処理実装中に知ったことをアウトプットします。
間違いがあればご指摘いただけると幸いです。
同期処理と非同期処理
同期処理とは
- 処理が順番に実行される方式
- 各処理が完了するまでプログラムが待機
- 実行が直列的なので、遅い処理があると全体がブロックされる(遅延が発生)
非同期処理
- 処理が独立して実行される方式
- 処理を並行して実行可能
- 時間のかかる処理があっても、他のタスクはブロックされない
- 実装が複雑になりやすい
🚀Tast {}とは
新しい非同期タスクを生成し、その中で非同期処理を実行するための構造体
一言で言うと
「この括弧 {} の中の処理を、独立した非同期の作業単位として実行してね」という指示
💡日常生活に例えて見ると・・・
「別のスタッフに仕事を頼む」イメージです。
- あなたがお店の店長さん(メインの仕事をしている人)だとします。
- お客さんから「この商品について詳しく調べてほしい」という時間のかかりそうな依頼が来ました。
↓
👉Task {} を使わない場合(もし同期処理だったら):
- 店長(あなた)が自分でその調査を始めます。
- 調査が終わるまで、レジ打ちも、他のお客さんの対応もできません。お店の他の仕事が全部止まってしまいます。
➡️ これが UIフリーズ のような状態です。
👉Task {} を使う場合(非同期処理):
- 「よし、この調査は別のスタッフ(Task)に任せよう!」 と考えます。
- Task { ... } で、調査の仕事(... の部分)を新しいスタッフに渡します。
- あなたはすぐに他の仕事(レジ打ちなど)に戻れます。 お店のメインの仕事は止まりません。
- 頼まれたスタッフ(Task)は、あなたとは別に、裏でこっそり調査を進めてくれます。 これが「独立した」「非同期の」作業です。
- 調査が終わったら、スタッフがあなたに結果を報告してくれます。