我正在进行一个Rust项目,其中有两个不同的线程分别用于特定目的。一个是实时线程,直接与硬件接口,并保持严格的时间要求,而另一个是Web服务器线程,为查询所述硬件的当前状态提供API。
我需要一种机制,使得Web服务器线程能够从实时线程获取硬件的最新状态。这里的挑战在于避免使用互斥锁,因为实时线程不能承受被阻塞等待互斥锁的情况。
以下是我考虑过的几种解决方案及其相应的挑战:
1. `rwlock`:但是写入线程(实时线程)需要等待,如果有任何读取器锁定它。 2. 双缓冲:执行交换的线程需要对整个结构体进行可变引用,这会导致借用检查器出现问题。 3. `mpsc Channel`:如果没有进行Web请求,通道可能会很快填满,导致内存浪费。
我需要一种机制,使得Web服务器线程能够从实时线程获取硬件的最新状态。这里的挑战在于避免使用互斥锁,因为实时线程不能承受被阻塞等待互斥锁的情况。
以下是我考虑过的几种解决方案及其相应的挑战:
1. `rwlock`:但是写入线程(实时线程)需要等待,如果有任何读取器锁定它。 2. 双缓冲:执行交换的线程需要对整个结构体进行可变引用,这会导致借用检查器出现问题。 3. `mpsc Channel`:如果没有进行Web请求,通道可能会很快填满,导致内存浪费。