はじめに
プロダクト開発部の荒川です。私事ではありますが、バックエンドエンジニアからiOSエンジニアへと転向しました。iOS開発は全くの未経験だったのですが、周りのメンバにも助けられつつ、なんとかやっていけています。サーバサイド、クライアントサイドの両側面から一つのアプリケーションを眺めることができて、非常に楽しく開発できています。コンバイン用ゴムクローラー 5052NE KBL 500x90x52 パターンEオフセット【個人宅都度確認】【条件付送料無料】
さて前置きはここまでにして、今回は非同期処理をまとめてみました。擬似コードはMDN Web Docsより参考にさせていただいております。
同期処理と非同期処理のキホン
非同期を説明する前に、同期処理について説明しておきましょう。
同期処理とはあるタスクを順番に実行する方式のことで、そのタスクが実行されている間は他のタスクが中断される方式です。*1
同期処理にはいくつかの欠点があります。最たる例としてディスクアクセスなどのI/O処理の場合、メモリアクセスと比べると非常に遅い事が多く、ファイルやソケットが読み出しを完了するまで処理を止める必要があるので、その間は他の処理をすることができません。 ティンバーランド(Timberland) 6インチプレミアム A1149 (Men's)
一方で非同期処理はある処理を実行する間に他の処理を実現することができます。JavaScriptやSwiftなどのいわゆるクライアントサイド開発に携わる方は日常的に利用するはずです。非同期の実現方法にはいくつかの方法があるので、図は後ほどの実現方法の箇所にてご紹介します。
なぜ非同期処理が重要なのか
I/O処理に限らずブロックというのは、クライアントサイドにおいては大きな問題となります。アプリケーションのメインスレッドとしてUI専用のスレッド、ユーザからの操作を受け付けるためのイベントループの処理が動作しており、開発者が同スレッドにて処理をブロックするとイベントが処理できなくなります。結果としてユーザから見ると画面が止まったかのような体験となるので、UI以外の処理を同一スレッド上で実行するのを避けなければなりません。
もちろんサーバサイドにおいてもCPUを遊ばせておく必要性が低いので重要なテクニックであることには代わりありません。
続きを読む