Files
ForgeLM/.agents/rules/concurrency-and-threading-mandate.md
T

26 lines
1.1 KiB
Markdown

---
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