diff --git a/Sources/AsyncQueue/FIFOQueue.swift b/Sources/AsyncQueue/FIFOQueue.swift index 1775b29..b22f37a 100644 --- a/Sources/AsyncQueue/FIFOQueue.swift +++ b/Sources/AsyncQueue/FIFOQueue.swift @@ -81,11 +81,13 @@ extension Task { /// /// - Parameters: /// - name: Human readable name of the task. + /// - priority: The priority of the task. /// - fifoQueue: The queue on which to enqueue the task. /// - operation: The operation to perform. @discardableResult public init( name: String? = nil, + priority: TaskPriority? = nil, on fifoQueue: FIFOQueue, @_inheritActorContext @_implicitSelfCapture operation: sending @escaping @isolated(any) () async -> Success, ) where Failure == Never { @@ -96,7 +98,7 @@ extension Task { await semaphore.wait() await delivery.execute({ @Sendable delivery in await delivery.sendValue(executeOnce.operation()) - }, in: delivery, name: name).value + }, in: delivery, name: name, priority: priority).value } fifoQueue.taskStreamContinuation.yield(task) self.init(name: name) { @@ -133,11 +135,13 @@ extension Task { /// /// - Parameters: /// - name: Human readable name of the task. + /// - priority: The priority of the task. /// - fifoQueue: The queue on which to enqueue the task. /// - operation: The operation to perform. @discardableResult public init( name: String? = nil, + priority: TaskPriority? = nil, on fifoQueue: FIFOQueue, @_inheritActorContext @_implicitSelfCapture operation: sending @escaping @isolated(any) () async throws -> Success, ) where Failure == any Error { @@ -152,7 +156,7 @@ extension Task { } catch { delivery.sendFailure(error) } - }, in: delivery, name: name).value + }, in: delivery, name: name, priority: priority).value } fifoQueue.taskStreamContinuation.yield(task) self.init(name: name) { diff --git a/Sources/AsyncQueue/Utilities/Delivery.swift b/Sources/AsyncQueue/Utilities/Delivery.swift index dd6f680..d9dda64 100644 --- a/Sources/AsyncQueue/Utilities/Delivery.swift +++ b/Sources/AsyncQueue/Utilities/Delivery.swift @@ -42,8 +42,8 @@ actor Delivery { func execute( _ operation: sending @escaping (isolated ActorType) async -> Void, in context: isolated ActorType, - name: String? = nil, - priority: TaskPriority? = nil, + name: String?, + priority: TaskPriority?, ) -> Task { // In Swift 6, a `Task` enqueued from an actor begins executing immediately on that actor. // Since we're running on our actor's context already, we can just dispatch a Task to get first-enqueued-first-start task execution.