diff --git a/Sources/RefdsShared/Task/RefdsTask.swift b/Sources/RefdsShared/Task/RefdsTask.swift index 6c26103..67db5da 100644 --- a/Sources/RefdsShared/Task/RefdsTask.swift +++ b/Sources/RefdsShared/Task/RefdsTask.swift @@ -2,7 +2,10 @@ import Foundation public protocol RefdsTaskProtocol { typealias ExecuteItem = () -> Void + typealias ControlExecuteItem = (DispatchGroup) -> Void + func execute(items: [ExecuteItem]) + func execute(items: [ControlExecuteItem]) } public final class RefdsTask: RefdsTaskProtocol { @@ -33,4 +36,14 @@ public final class RefdsTask: RefdsTaskProtocol { } group.wait() } + + public func execute(items: [ControlExecuteItem]) { + items.forEach { item in + group.enter() + queue.async { + item(self.group) + } + } + group.wait() + } }