0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【SwiftUI】Task {}について学んだ

Posted at

はじめに

非同期処理実装中に知ったことをアウトプットします。
間違いがあればご指摘いただけると幸いです。

同期処理と非同期処理

同期処理とは

  • 処理が順番に実行される方式
  • 各処理が完了するまでプログラムが待機
  • 実行が直列的なので、遅い処理があると全体がブロックされる(遅延が発生)

非同期処理

  • 処理が独立して実行される方式
  • 処理を並行して実行可能
  • 時間のかかる処理があっても、他のタスクはブロックされない
  • 実装が複雑になりやすい

🚀Tast {}とは

新しい非同期タスクを生成し、その中で非同期処理を実行するための構造体

一言で言うと
「この括弧 {} の中の処理を、独立した非同期の作業単位として実行してね」という指示

💡日常生活に例えて見ると・・・

「別のスタッフに仕事を頼む」イメージです。

  • あなたがお店の店長さん(メインの仕事をしている人)だとします。
  • お客さんから「この商品について詳しく調べてほしい」という時間のかかりそうな依頼が来ました。

👉Task {} を使わない場合(もし同期処理だったら):

  • 店長(あなた)が自分でその調査を始めます。
  • 調査が終わるまで、レジ打ちも、他のお客さんの対応もできません。お店の他の仕事が全部止まってしまいます。
    ➡️ これが UIフリーズ のような状態です。

👉Task {} を使う場合(非同期処理):

  • 「よし、この調査は別のスタッフ(Task)に任せよう!」 と考えます。
  • Task { ... } で、調査の仕事(... の部分)を新しいスタッフに渡します。
  • あなたはすぐに他の仕事(レジ打ちなど)に戻れます。 お店のメインの仕事は止まりません。
  • 頼まれたスタッフ(Task)は、あなたとは別に、裏でこっそり調査を進めてくれます。 これが「独立した」「非同期の」作業です。
  • 調査が終わったら、スタッフがあなたに結果を報告してくれます。
0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?