我正在开发一个 Rust 项目,其中有两个不同的线程用于特定目的。一个是实时线程,直接与硬件交互并保持严格的时序要求,而另一个是 Web 服务器线程,提供用于查询所述硬件当前状态的 API。
我需要一种机制,通过该机制Web服务器线程可以从实时线程获取硬件的最新状态。这里的挑战是避免使用互斥体,因为实时线程不能因为等待互斥体而被阻塞。
以下是我考虑过的一些解决方案及其相应的挑战:
rwlock
:但是如果任何读者拥有锁,则编写器线程(实时线程)将需要等待。mpsc Channel
:如果没有发出网络请求,通道可能会很快填满,导致内存浪费。