All Projects → shadowndacorner → Unity-Multithreaded-Job-System

shadowndacorner / Unity-Multithreaded-Job-System

Licence: MIT license
A multithreaded job system for Unity3d

Programming Languages

C#
18002 projects

Projects that are alternatives of or similar to Unity-Multithreaded-Job-System

rapp
Cross-platform entry point library
Stars: ✭ 57 (+147.83%)
Mutual labels:  job-scheduler, multithreading
Taskscheduler
Cross-platform, fiber-based, multi-threaded task scheduler designed for video games.
Stars: ✭ 402 (+1647.83%)
Mutual labels:  job-scheduler, multithreading
Fiber Job System
Multi-Threaded Job System using Fibers
Stars: ✭ 121 (+426.09%)
Mutual labels:  job-scheduler, multithreading
iocp-delphi
Windows I/O Completion Port wrapper class for Delphi and Free Pascal
Stars: ✭ 47 (+104.35%)
Mutual labels:  multithreading
nest-queue
Queue manager for NestJS Framework for Redis (via bull package)
Stars: ✭ 69 (+200%)
Mutual labels:  job-scheduler
pooljs
Browser computing unleashed!
Stars: ✭ 17 (-26.09%)
Mutual labels:  multithreading
TuubesCore
Scalable server engine for voxel / cubic games
Stars: ✭ 48 (+108.7%)
Mutual labels:  multithreading
Jobs
jobs 分布式任务调度平台
Stars: ✭ 245 (+965.22%)
Mutual labels:  job-scheduler
Simple-Incremental-Search-Tool
Simple web frontend to an elasticsearch database made for local files indexing
Stars: ✭ 19 (-17.39%)
Mutual labels:  multithreading
Thread
type safe multi-threading made easier
Stars: ✭ 34 (+47.83%)
Mutual labels:  multithreading
executorservices
Dart executer services.
Stars: ✭ 17 (-26.09%)
Mutual labels:  multithreading
SQLServerTools
This repo is the home of various SQL-Server-Tools
Stars: ✭ 28 (+21.74%)
Mutual labels:  job-scheduler
tfprof
Profiling Taskflow Programs through Visualization
Stars: ✭ 36 (+56.52%)
Mutual labels:  multithreading
ipub-messaging
Messaging system for communication between classes / layers in delphi
Stars: ✭ 46 (+100%)
Mutual labels:  multithreading
GroundGrowing
Open Source Unity3d Planetary Terrain Editor Extension with incremental background updates via multithreading
Stars: ✭ 66 (+186.96%)
Mutual labels:  multithreading
RASM
3D Ray-Tracing WebGPU Game Engine Written in Rust WebAssembly.
Stars: ✭ 20 (-13.04%)
Mutual labels:  multithreading
Backgroundable Android
Collection of stock apps and mechanisms, which might affect background tasks and scheduled alarms.
Stars: ✭ 247 (+973.91%)
Mutual labels:  job-scheduler
AIO
Coroutine-based multithreading library for Delphi
Stars: ✭ 99 (+330.43%)
Mutual labels:  multithreading
every
Fluent API job scheduling engine for .NET
Stars: ✭ 22 (-4.35%)
Mutual labels:  job-scheduler
scattersphere
Job Coordination API for Tasks
Stars: ✭ 30 (+30.43%)
Mutual labels:  job-scheduler
This is a very basic multithreaded job system for Unity with a simple task scheduler, where each worker thread has its own local queue to try to avoid contention.

For example usage as a means for natively multithreading a component's Update, look at Sample/TestThread.cs, it's pretty well commented.

I made this as a quick exercise to see how much effort would be involved in such a system.  I might keep working on it, I might not.

Architecturally, this uses a lockful (if that's a term?) work-stealing job system with n-1 workers (where n is processor count).  While jobs are running, the main thread tries to steal background work itself if it doesn't have anything queued to run.

In the future, I'd like to implement more of the ideas from Naughty Dog's GDC 2015 talk, such as waiting via atomic counters and scheduling jobs from within jobs.  But I'd say this is certainly a nice start.  It would also be very nice to ensure that each thread is locked to a processor core, but .NET doesn't provide any facilities with which to do this, so it would require native code.  Which wouldn't be complicated to implement, however it would lose its ability to easily be deployed cross platform, as each platform and processor architecture would require a precompiled shared library.
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].