Manifesto
Changelog
Coding Style Guide
API
License
Top Level
Carbonite Plugins/Interfaces
Omniverse Native Interfaces
Deploying a Carbonite Application
Components
Asserts
Audio
Crash Reporter
Function
Carbonite Input Plugin
Overview
Localization
Logging
Memory
Python Bindings
String
Tasking
Tasking Overview
API
Best Practices
Fibers vs. Threads
Anatomy of a Task
ISettings keys
Synchronization
Notifications
Debugging
Telemetry
Unicode
Guides
ABI Compatibility
Building
Testing
Packaging
Releasing
Using Valgrind
Carbonite Interface Walkthrough
Creating a New Omniverse Native Interface
Troubleshooting
Extending an Omniverse Native Interface Walkthrough
Using omni.bind
Documenting
Documentation Guidelines
Restructured Text Guide
C++ Documentation Guide
Python Documentation Guide
carbonite
»
Carbonite Tasking
Carbonite Tasking
Contents:
Tasking Overview
Overview
Quick Start
Architecture
API
API Documentation
Best Practices
Think in Terms of Coroutines
No Thread-Specific Data
Sleeping
Suspend/Wake
Determine if Running as a Task
Mutexes
Use Pinning Only as a Last Resort
Fibers vs. Threads
Overview
Job Systems
Co-routines
“Stackful” vs. “Stackless”
Using Threads as Parallelized Co-Routines?
Using Fibers as Parallelized Co-Routines
History
Timings
Benchmarks on an AMD Threadripper PRO 5975W 3.6 GHz running Windows 11 21H2
Benchmarks on an Intel i9-7900X @ 3.30GHz running Ubuntu 22.04.02 LTS
Frequently Asked Questions
Conclusion
Anatomy of a Task
Priority
Trackers
No Trackers
TaskGroup Tracker
TaskContext Tracker
Future<void> Tracker
Counter Tracker
“Functionish”
Lambda
Function and Pointer-to-Function
Member Functions
Functors
Execution
Assigning a fiber
Invoking the Callable
Notifying Trackers
Returning Values
Task Completion and Guarantees
Phase 1: Tracker Exit
Phase 2: Task Completion
Cancellation
Other Task Types
Throttled Tasks
Sub-tasks
Timed Tasks
ISettings keys
Synchronization
Parallel-For / applyRange
Batch size heuristic
Recursive applyRange
Synchronous Tasks
TaskGroup
Waiting
Throttling
The “Main” Priority
Counters (Deprecated)
Deprecation Warning
Signaling task completion
Manual Counter Manipulation
Sub-tasks
Notifications
How it works
Implementing IFiberEvents
Debugging
Linux Debugging
Windows Debugging
ApplyRange Calls
Task Counts
Showing All Tasks
Task Prerequisites
debugTaskBacktrace
Debugging Deadlocks
Emergency Threads
Running out of Fibers
Waiting in a non-Fiber-Safe Manner
debugWaitingTasks