# How to currently offload stateless blocking work? Hidden executor API?

**URL:** <https://forums.swift.org/t/how-to-currently-offload-stateless-blocking-work-hidden-executor-api/59128>\
**Category:** Using Swift\
**Tags:** concurrency, asyncawait\
**Created:** [July 21, 2022, 8:20pm UTC](https://forums.swift.org/t/how-to-currently-offload-stateless-blocking-work-hidden-executor-api/59128 "2022-07-21T20:20:20Z")\
**Posts on this page:** 1\
**Page:** 2

<div class="post-metadata">

**Author:** ![ksluder](https://avatars.discourse-cdn.com/v4/letter/k/eada6e/32.png) [@ksluder](https://forums.swift.org/u/ksluder)\
**Post date:** [August 22, 2023, 8:12pm UTC](https://forums.swift.org/t/how-to-currently-offload-stateless-blocking-work-hidden-executor-api/59128/21 "2023-08-22T20:12:03Z")

</div>

> [@tera](#):
>
> setTarget(queue:) instance method is irrelevant as `concurrentPerform` is a class method.

The C version of the call is `dispatch_apply`, which takes a queue. But the current recommendation is to pass `DISPATCH_APPLY_AUTO` for the queue argument, which picks one of the global concurrent queues. So it seems like the libdispatch team took the opportunity to define away the confusing semantics and bake in current best practices when refining the API for Swift.

[Previous page](https://forums.swift.org/t/how-to-currently-offload-stateless-blocking-work-hidden-executor-api/59128.md?page=1)
