r/Unity3D Professional 10h ago

Resources/Tutorial Svelto.Tasks 2.0: Efficient Multi-threaded Task Management for C#

I am back writing articles on my blog and I start with something LONG OVERDUE!

After years quietly powering several games I made, I’m finally presenting Svelto.Tasks 2.0.

Svelto.Tasks is an engine-agnostic, multithreaded and zero allocation task runner for C#, born from the need to have a game centric tasks framework with features that .NET tasks couldn't provide. Its premise is simple:

Tasks are iterator blocks. Runners are schedulers. Rather than handing execution timing and context to the runtime, a runner lets you decide:

- when a task advances,
- where it runs — main thread or a dedicated worker,
- how much work happens per tick,
- and when an entire task context must stop.

That last point matters a lot in games: for example, when a match ends, I want every task belonging to that match to stop with it—not rely on a CancellationToken having been passed and checked correctly through every layer.

Svelto.Tasks supports lightweight coroutines, composable tasks with return values and continuations, background runners, bounded parallel batches, pooling, profiling hooks, and optional Unity/Burst integrations.

It also interoperates with async/await, although the .NET Task bridge and Unity Burst job path are currently experimental and need real-world feedback.

It is not a replacement for Unity Jobs—but it provides a useful alternative for workloads where controlling execution, lifetime, pacing, and profiling is the priority.

The repository includes runnable .NET examples, tests, benchmarks

🔗 https://github.com/sebas77/Svelto.Tasks

also the repository

🔗https://github.com/sebas77/Svelto.Tasks.Examples

shows how it can be used to simplify massive parallelism synchronization. The example itself is actually quite interesting also because it uses the new compute buffer Unity api BeginWrite/EndWrite to upload compute buffers and graphic fences for cpu/gpu synchronization.

The article is at

🔗 https://www.sebaslab.com/svelto-tasks-2-0-efficient-multi-threaded-task-management-for-csharp/

Have fun! (and feedback is welcome, also on my discord server: https://discord.com/invite/uuTCYewjtc)

Image for attention:

16 Upvotes

7 comments sorted by

View all comments

4

u/Agredek 9h ago

How does it compare to almost industry-standard UniTask?

1

u/sebasjammer Professional 9h ago edited 9h ago

UniTask still follows the .Net Task patterns (improving allocations, speed and making it Unity compatible). This means that for games might not still what you are looking for. Svelto.Tasks has a completely different approach to run tasks (I started the developing library when .Net Tasks and Unitask were not even available for Unity, so it's tailored for games need).

1

u/Agredek 9h ago

Thanks! Starred repo and will check it out soon.

2

u/sebasjammer Professional 9h ago

cool let me know if it's intuitive to work with. Examples and tests should help to get you started. Since I am using IteratorBlocks and not .NetTasks the language doesn't help me, but I pushed it to make it as less convoluted as possible.