---
title: "addTask(executorPreference:priority:operation:)"
framework: swift
role: symbol
role_heading: Instance Method
path: "swift/throwingdiscardingtaskgroup/addtask(executorpreference:priority:operation:)"
---

# addTask(executorPreference:priority:operation:)

Adds a child task to the group.

## Declaration

```swift
mutating func addTask(executorPreference taskExecutor: (any TaskExecutor)? = nil, priority: TaskPriority? = nil, operation: sending @escaping @isolated(any) () async throws -> Void)
```

## Parameters

- `taskExecutor`: The task executor that the child task should be started on and keep using. Explicitly passing nil as the executor preference is equivalent to calling the addTask method without a preference, and effectively means to inherit the outer context’s executor preference. You can also pass the doc://com.apple.Swift/documentation/Swift/globalConcurrentExecutor global executor explicitly.
- `priority`: The priority of the operation task. Omit this parameter or pass nil to inherit the task group’s base priority.
- `operation`: The operation to execute as part of the task group.

## Discussion

Discussion This method doesn’t throw an error, even if the child task does. Instead, the corresponding call to ThrowingTaskGroup.next() rethrows that error.
