Expand description
A utility module for working with threads that automatically joins threads upon drop and abstracts over operating system quality of service (QoS) APIs through the concept of a “thread intent”.
The intent of a thread is frozen at thread creation time, i.e. there is no API to change the intent of a thread once it has been spawned.
As a system, rust-analyzer should have the property that old manual scheduling APIs are replaced entirely by QoS. To maintain this invariant, we panic when it is clear that old scheduling APIs have been used.
Moreover, we also want to ensure that every thread has an intent set explicitly
to force a decision about its importance to the system.
Thus, ThreadIntent
has no default value
and every entry point to creating a thread requires a ThreadIntent
upfront.