Skip to content

Commit aeee678

Browse files
committed
feat: add C++20 coroutines integration example
- Created coroutine_integration_demo.cpp with comprehensive examples - Shows fine-grained execution control with pause/resume - Demonstrates cooperative multitasking for integrations - Features zero-overhead state preservation with co_yield - Includes examples: Lorenz system, parameter scanning, progress monitoring, orbital mechanics - Added build target with C++20 language requirement - Updated examples documentation with coroutines section - Showcases the power of coroutines for CPU granularity control
1 parent 809f51f commit aeee678

File tree

3 files changed

+748
-2
lines changed

3 files changed

+748
-2
lines changed

examples/README.md

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ This directory contains comprehensive examples demonstrating how to use the diff
1111
- **`advanced_integrators_usage.cpp`** - Advanced integrator features and configurations
1212
- **`state_concept_usage.cpp`** - Shows how to use different state types (vectors, arrays, custom types)
1313
- **`std_async_integration_demo.cpp`** - Direct use of C++ standard library async facilities without unnecessary abstractions
14+
- **`coroutine_integration_demo.cpp`** - C++20 coroutines integration for fine-grained execution control and cooperative multitasking
1415
- **`timeout_integration_demo.cpp`** - Timeout-protected integration for robust applications
1516
- **`seamless_parallel_timeout_demo.cpp`** - Seamless integration of timeout + async + parallel execution
1617

@@ -42,6 +43,12 @@ This directory contains comprehensive examples demonstrating how to use the diff
4243
- Heston stochastic volatility
4344
- Noisy oscillator control systems
4445
- Stochastic Lotka-Volterra ecosystem models
46+
- **`coroutine_integration_demo.cpp`** - C++20 Coroutines integration:
47+
- Fine-grained execution control with pause/resume
48+
- Cooperative multitasking for multiple integrations
49+
- Zero-overhead state preservation between yields
50+
- Progress monitoring with minimal overhead
51+
- Interruptible long-running computations
4552
- **`advanced_gpu_async_demo.cpp`** - GPU acceleration with async processing
4653
- **`realtime_signal_processing.cpp`** - Real-time signal processing integration
4754
- **`composable_facilities_demo.cpp`** 🎯 **NEW: Solves Combinatorial Explosion** - Composable architecture demonstration:
@@ -112,7 +119,12 @@ For complex applications:
112119
- `sde_usage_demo.cpp` - Stochastic differential equations
113120
- `advanced_gpu_async_demo.cpp` - GPU acceleration
114121

115-
### 4. Domain-Specific Examples
122+
### 4. Modern C++ Features
123+
- **C++20 Coroutines**: Fine-grained control and cooperative multitasking in `coroutine_integration_demo.cpp`
124+
- **Standard Library Async**: Direct use of std::async without abstractions in `std_async_integration_demo.cpp`
125+
- **Parallel Execution**: Hardware-optimized parallel processing in `parallelism_usage_demo.cpp`
126+
127+
### 5. Domain-Specific Examples
116128
- **Finance**: Black-Scholes, Heston models in `sde_usage_demo.cpp`
117129
- **Robotics**: Control systems in `parallelism_usage_demo.cpp`
118130
- **Scientific**: Chemical reactions, ecosystem models in `sde_usage_demo.cpp`
@@ -125,6 +137,14 @@ For complex applications:
125137
- **Adaptive Methods**: Automatic step size control
126138
- **Stiff Systems**: BDF and LSODA for stiff problems
127139

140+
### Modern C++ Features
141+
- **C++20 Coroutines**:
142+
- Pausable/resumable integration with `co_yield`
143+
- Fine-grained CPU control for real-time systems
144+
- Zero-overhead state preservation
145+
- Cooperative multitasking between multiple integrations
146+
- Progress monitoring without blocking the main thread
147+
128148
### Parallelism
129149
- **CPU Parallelism**: std::execution, OpenMP, Intel TBB
130150
- **GPU Acceleration**: CUDA, Thrust integration

0 commit comments

Comments
 (0)