Manifesto
Changelog
API
License
Components
Omniverse Native Interfaces
Asserts
Framework
Logging
Audio
Tasking
Tasking Overview
API
Best Practices
Anatomy of a Task
ISettings keys
Synchronization
Notifications
Debugging
Telemetry
Unicode
Localization
Python Bindings
Memory
String
Crash Reporter
Guides
Contributing
Forking / Cloning
Building
Testing
Developing
Coding Style Guide
Packaging
Releasing
Using Valgrind
Carbonite Interface Walkthrough
ONI 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
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
General Debugging
debugTaskBacktrace
Showing All Tasks
Debugging Deadlocks
Emergency Threads
Running out of Fibers
Waiting in a non-Fiber-Safe Manner
debugWaitingTasks