ZeroAllocJobScheduler 1.0.1
There is a newer version of this package available.
See the version list below for details.
See the version list below for details.
dotnet add package ZeroAllocJobScheduler --version 1.0.1
NuGet\Install-Package ZeroAllocJobScheduler -Version 1.0.1
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="ZeroAllocJobScheduler" Version="1.0.1" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add ZeroAllocJobScheduler --version 1.0.1
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: ZeroAllocJobScheduler, 1.0.1"
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install ZeroAllocJobScheduler as a Cake Addin #addin nuget:?package=ZeroAllocJobScheduler&version=1.0.1 // Install ZeroAllocJobScheduler as a Cake Tool #tool nuget:?package=ZeroAllocJobScheduler&version=1.0.1
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
ZeroAllocJobScheduler
A highperformance alloc free c# Jobscheduler.
Schedules and executes jobs on a set of worker threads with automatic pooling of internal handles.
Code sample
public class HeavyCalculation : IJob{
public void Execute(){
Thread.Sleep(50); // Simulate heavy work...
Console.WriteLine("Done");
}
}
// Automatically chooses threads based on your processor count
var scheduler = new JobScheduler("MyThreads");
// You need to pool/create jobs still by yourself
var firsJob = new HeavyCalculation();
var firstHandle = firsJob.Schedule(false); // Schedules job locally, false = user needs to wait for complete and return to pool
scheduler.Flush(); // Flushes all scheduled jobs to the worker threads
firstHandle.Complete(); // Blocks till job was completed
firstHandle.Return(); // Returns job to pool
// Dispose
scheduler.Dispose();
Fire and forget sample
// Automatically chooses threads based on your processor count
var scheduler = new JobScheduler("MyThreads");
// You need to pool/create jobs still by yourself
var firsJob = new HeavyCalculation();
var firstHandle = firsJob.Schedule(true); // Schedules job locally, true = user cant wait for it or return, its fire & forget
// Dispose
scheduler.Dispose();
Advanced API
IJob.Schedule(IList<IJob> jobs, IList<JobHandle> handles); // Schedules a bunch of jobs at once, syntax sugar... handles written into passed array
JobHandle.Complete(JobHandle[] handles); // Waits for all jobhandles to finish, blocks till they are
JobHandle.Return(JobHandle[] handles); // Returns all handles to the pool
JobHandle.Complete(IList<JobHandle> handles); // Waits for all jobhandles to finish, blocks till they are
JobHandle.Return(IList<JobHandle> handles); // Returns all handles to the pool
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. |
.NET Core | netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
.NET Standard | netstandard2.1 is compatible. |
MonoAndroid | monoandroid was computed. |
MonoMac | monomac was computed. |
MonoTouch | monotouch was computed. |
Tizen | tizen60 was computed. |
Xamarin.iOS | xamarinios was computed. |
Xamarin.Mac | xamarinmac was computed. |
Xamarin.TVOS | xamarintvos was computed. |
Xamarin.WatchOS | xamarinwatchos was computed. |
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
-
.NETStandard 2.1
- Microsoft.Extensions.ObjectPool (>= 7.0.0)
NuGet packages (2)
Showing the top 2 NuGet packages that depend on ZeroAllocJobScheduler:
Package | Downloads |
---|---|
Arch
A high performance c# net.7 and net.8 archetype based ECS ( Entity component system ). |
|
ABEngine.Arch
A high performance c# net.6 and net.7 archetype based ECS ( Entity component system ). |
GitHub repositories (2)
Showing the top 2 popular GitHub repositories that depend on ZeroAllocJobScheduler:
Repository | Stars |
---|---|
genaray/Arch
A high-performance C# based Archetype & Chunks Entity Component System (ECS) with optional multithreading.
|
|
AnnulusGames/Arch.Unity
Arch ECS integration for Unity.
|
Initial release.