1.1 KiB
1.1 KiB
trigger
| trigger |
|---|
| always_on |
Concurrency and Threading Mandate
When to Use Concurrency
I/O-Bound Operations: Use asynchronous I/O, event-driven concurrency, or coroutines when waiting on network requests, file I/O, or database queries.
CPU-Bound Operations: Use OS threads or thread pools for heavy computation, data processing, or encoding work where CPU cycles dominate.
Don't Over-Use Concurrency: Concurrency adds significant complexity (race conditions, deadlocks, debugging difficulty). Profile first — only add concurrency when there is a measurable performance benefit.
For implementation details (race condition prevention, deadlock avoidance, message passing patterns), see Concurrency and Threading Principles @concurrency-and-threading-principles.md.
When NOT to Use Concurrency
- Simple synchronous operations
- No measurable performance benefit
- Avoid premature optimization
Related Principles
- Concurrency and Threading Principles @concurrency-and-threading-principles.md
- Performance Optimization Principles @performance-optimization-principles.md
- Rust Idioms and Patterns @rust-idioms-and-patterns.md