| ▲ | surajrmal 2 hours ago | |||||||
The implementation for the rust std mutex when targeting fuchsia does implement priority inheritance by default, but the zircon kernel scheduler and futex implementation are written with priority inheritance in mind as the default approach rather than something ad hoc tacked on. Unfortunately on Linux it seems like there is a large performance tradeoff which may not be worthwhile for the common case. It does seem like it would be nice to set an env variable to change the behavior through rather than require a recompile of libstd. A lot of programs use alternatives to the std library as well like parking_lot, which is indeed a pain. Sometimes I feel like trying to use Linux for realtime is an effort in futility. The ecosystem is optimized for throughput over fairness, predictability, and latency. | ||||||||
| ▲ | jcalvinowens 2 hours ago | parent [-] | |||||||
> Unfortunately on Linux it seems like there is a large performance tradeoff Implementing transitive priority inheritance is just inherently algorithmically more expensive: there's no avoiding that. > Sometimes I feel like trying to use Linux for realtime is an effort in futility. If you're not actually using an RT kernel, yeah, it's futile. But if you are, the guarantees are pretty strong... on x86 PCs, the hardware gets in the way much more than the software in my experience. There's a lot of active work upstream. | ||||||||
| ||||||||