アラン iOS Concurrency(並行処理) - Dispatch QueueとOperation Queueの理解
並行性(Concurrency)プログラミング - iOSプログラミングで必要となる同期・非同期の概念、およびそれを拡張したGCDやOperationに関するすべての内容を扱います。

お知らせ
5 件
Swift Concurrency (Part-2) レクチャーをリリースしました。
こんにちは!アランです。
たくさん待っていた.. Swift Concurrency川のPart-2部分を発売するようになりました。講義リンク:https: //inf.run/rFuFe
Swift Concurrencyに関連してより深く学習したい人は、講義がはっきりと役立つと思います。 (全体の完強はまだありませんが、現在講義の70%の内容がアップロードされ、残りの30%の内容も3月末までにアップロードされる予定です。)
先着順100名様に講義の50%割引特典、そしてその後200名様に45%割引特典を差し上げていますので.. 講義の購入に興味のある方は早く先着順に挑戦してみてください。
(講義ページに入ると、上段に先着順割引特典リンクが別にありますので。こんにちは!アランです。 :)
久しぶりにニュースを投稿するようになりました。
私の講義を聞いてください..私の講義の内容をまた丁寧に..本人だけのスタイルで再解釈された"sujinnaljin"さんのブログをご紹介いたしますように久しぶりにニュースをお届けします。 :)
私はとても面白くてよく書いています…
以下の目次とリンクを一緒にお届けします!これまで質問もたくさんしていただきましたし、また追加的にいろいろな内容も直接また勉強していただきました。 GCD内容を復習する兼入って一度見てみるのもいいと思います!ㅎㅎ
(そしてGCD以外の他のiOS関連の内容も本当に簡単で面白いことも多いので、参考にしてみるといいようです。)
["sujinnaljin"さんのブログ - GCD関連目次とリンク][iOS] じっくり始めるGCD — 1: 今度はどうぞ理解したい GCD..🥂
[iOS] 次々と始まる GCD — 2: GCD と Operation について学びましょう
[iOS] 次々と始まる GCD — 3: sync(同期) vs async(非同期) を調べましょう
[iOS] 次々と始まるGCD — 4: Serial(シリアル) vs Concurrent(同時)について学びましょう
[iOS] 次々と始まる GCD — 5: GCD Dispatch Queue の種類と特性について学びましょう
[iOS] DispatchQueue と task の QoS が異なる時の動作方式: 次々と始まる GCD — 5 番外編
[iOS] 次々と始まる GCD — 6: GCD 使用時の注意点について学びましょう
[iOS] 次々と始まる GCD — 7: Dispatch Group の概念について学びましょう
[iOS] 次々と始まる GCD — 8: Dispatch Group に非同期タスクを含むタスクを送信する方法を学びましょう。
[iOS] 次々と始まる GCD — 9: DispatchWorkItem について学びましょう
[iOS] 次々と始まる GCD — 10: DispatchSemaphore について学びましょう
[iOS] 次々と始まる GCD — 11: 並行性に関する問題 (Concurrency Problems) の中で競争状態 (Race Condition) について学びましょう
[iOS] 次々と始まる GCD — 12: 競合状態(Race Condition) 解決方法について学びましょう — Serial queue + sync
[iOS] 次々と始まる GCD — 13: 競合状態(Race Condition) 回避策について学びましょう — Dispatch Barrier
[iOS] 次々と始まる GCD — 14: デッドロックと解決方法を学びましょう
[iOS] じっくりと始める GCD — 15: 優先順位の逆転(Priority Inversion)と解決策について学びましょう
そして、7月ほどに講義内容に若干のアップデートが予定されています。 :)
ランループ / 物理 Thread(並列) vs ソフトウェア Thread(同時性) / Block - NonBlock / async, awaitなどに内容に関して..進行中の講義があります。
それではまた良い講義の内容でお返しすることを約束します。
-アランドリーム-こんにちは、久しぶりにニュースで挨拶します。
違いはありません、
なぜUIをメインスレッドで更新するのですか?という質問に対する良い文があり、解釈本を作ることになって共有しようとします。
もしも良い参考資料になってほしいです。
(記事のオリジナルソース)
https://medium.com/@duwei199714/ios-why-the-ui-need-to-be-updated-on-main-thread-fd0fef070e7f
(解釈本pdf資料)
https://drive.google.com/file/d/1dFw6sJsxV-huK3BoHXgDq-7rXy9yBq9l/view?usp=sharing
簡単にまとめると、
1) UIKitのすべての属性をThread-safeに設計すると、遅くなるなどの性能低下が発生する可能性があるため、そのように設計することはできません。 (Thread-safeしないように設計したのはAppleの意図だ。)
2)メインランループ(Runloop)がビューの更新を管理するView Drawing Cycleを通じてビューを同時に更新するそのような設計を通じて動作しているが、(メインスレッドではない)バックグラウンドスレッドがそれぞれのランループでそのような動作をになったとき、ビューが勝手に動作する可能性があります。 (例えば、デバイスを回転すると、同時にビューのレイアウトが再配置されるような動作ができなくなる可能性があります。)
3) iOSが描画する描画プロセス(コアアニメーション - >レンダリングサーバー - > GPU - >表示)がありますが、複数のスレッドからそれぞれのビューの変更GPUに送ると、GPUはそれぞれの情報をすべて解釈する必要があるため、遅くなります。 、非効率的である可能性があります。
4) TextureやComponentKitというFacebookで開発した非同期的なUIフレームワークがあるが、View Drawing Cycleが同様の方法で適切なタイミングでメインスレッドで同時に更新するようにしている。
これほど 内容です。実際、iOSだけでなくWindowsや他のOSでも同様に、このような上記の同様の様々な理由のため、構造的にメインスレッドでのみUIアップデートができるようにしているのではないか、また考えてみる文でした。
ただ一度考えてみることができるテーマです。
ありがとうございます。
こんにちは。アランです。
まずiOS同時性プログラミング講義を受講していただきありがとうございます。 :)
最近..質問部分にお二人が..良い質問をお寄せいただき、
少しコメントで誤りがある部分..そして説明をもう少し明確にしたい
該当部分の映像を再度撮り、編集して(既存の映像ファイルに置き換えて)
アップロードしておいて、コードやPDFファイルも少し修正してアップロードしました。
いいと思い、ニュースを投稿するようになりました。
(もしかしたら参考に二人の質問や私の回答を一度見てみても少し勉強に役立つようです。^^)
その部分は
GCDで3.ディスパッチキュー(GCD)を使用する際の注意事項
2)syncメソッドに関する注意事項。つまり、現在のキュー(async)から現在のキュー(sync)に送信しない理由について
もう少し明確に扱った部分です。
(以下は、私が講義教案PDFに追加したページを画像としてキャプチャしたものです。)

PDFファイルには上記のような内容を追加しておき、参考にしてみるといいでしょう。
はい.. もしも追加的に説明が足りないか、理解がうまくいかない部分がありましたら、いつでも質問をお願いいたしますと、誠心誠意までお答えいたします。
いつもありがとうございます:)
いつでも気軽に質問をしていただければ、誠心誠意までお答えいたします。
ありがとうございます^^

