GCDタスクキューの組み合わせ
758 ワード
前回はGCDの簡単な紹介と以下の概念を簡単に話しました.キューはシリアルキューと同時キューに分けられる.タスクは同期タスクと非同期タスクに分けられる.タスクとキューの組み合わせには、次の4つがあります.
タスクキュー
シリアルキュー
パラレルキュー
同期タスク
-
-
非同期タスク
-
-
2つの特殊なキューがあると言いましたグローバルキューとプライマリ・キューグローバルキューは直接同時キューとして使用できるためである.ここでは比較しません.
では、今また2つの組み合わせが増えました
タスクキュー
シリアルキュー
パラレルキュー
ホームチーム列
同期タスク
新しいスレッドはオープンしません.
新しいスレッドはオープンしません.
デッドロック、クラッシュ
非同期タスク
新しいスレッドはオープンしません.
タスクがシリアル実行され、スレッドが開いてタスクが実行されます.
任务顺序执行新しいスレッドは開かない
このシリアルキュー同期タスクについて詳しく説明しなければなりません.シリアルキューに同期タスクを追加する場合.例えば、メインスレッドにシリアルキューを作成し、シリアルタスクを順次追加します.それは問題ありませんが、シリアルタスクの同期タスクに同期タスクを再追加すると、Aがシリアルキューに参加するのを待ってタスクが終了し、BがAが完了するのを待ってタスクに参加するデッドロックが発生し、プログラムがクラッシュします.
##推測##
タスクキュー
シリアルキュー
パラレルキュー
同期タスク
-
-
非同期タスク
-
-
2つの特殊なキューがあると言いましたグローバルキューとプライマリ・キューグローバルキューは直接同時キューとして使用できるためである.ここでは比較しません.
では、今また2つの組み合わせが増えました
タスクキュー
シリアルキュー
パラレルキュー
ホームチーム列
同期タスク
新しいスレッドはオープンしません.
新しいスレッドはオープンしません.
デッドロック、クラッシュ
非同期タスク
新しいスレッドはオープンしません.
タスクがシリアル実行され、スレッドが開いてタスクが実行されます.
任务顺序执行新しいスレッドは開かない
このシリアルキュー同期タスクについて詳しく説明しなければなりません.シリアルキューに同期タスクを追加する場合.例えば、メインスレッドにシリアルキューを作成し、シリアルタスクを順次追加します.それは問題ありませんが、シリアルタスクの同期タスクに同期タスクを再追加すると、Aがシリアルキューに参加するのを待ってタスクが終了し、BがAが完了するのを待ってタスクに参加するデッドロックが発生し、プログラムがクラッシュします.
##推測##
, , .