質問するログイン新規登録

回答編集履歴

1

丸投げ

2019/10/28 08:10

投稿

fuzzball
fuzzball

スコア16733

answer CHANGED
@@ -1,1 +1,30 @@
1
- enter/async/leaveの位置がおかしいです。ループの中に入れて下さい。
1
+ enter/async/leaveの位置がおかしいです。ループの中に入れて下さい。
2
+
3
+ ---
4
+
5
+ 無事に解決できたようなのでコードを書いておきます。(**Kapustin**さんの回答から、ダミーデータ周りのコードをお借りしてます)
6
+
7
+ ```swift
8
+ var List: [Int] = []
9
+ for i in 0..<10 {
10
+ List.append(i)
11
+ }
12
+
13
+ let dispatchGroup = DispatchGroup()
14
+ let dispatchQueue = DispatchQueue(label: "queue", attributes: .concurrent)
15
+
16
+ // 非同期処理を実行
17
+ List.forEach { (value) in
18
+ dispatchGroup.enter()
19
+ dispatchQueue.async(group: dispatchGroup) {
20
+ Thread.sleep(forTimeInterval: Double.random(in: 1..<2))
21
+ print(value)
22
+ dispatchGroup.leave()
23
+ }
24
+ }
25
+
26
+ // 全ての非同期処理完了後にメインスレッドで処理
27
+ dispatchGroup.notify(queue: .main) {
28
+ print("All Process Done!")
29
+ }
30
+ ```