有一个项目,是单线程的,所以希望能够避免mutex这种,最多用RefCell。现在定义一个类/结构。因为是初学,下面就是示意一下,基本功能就是两个函数,其中一个是add_watcher,把一个watcher加到vector里面。
struct Server{
watchers: RefCell<Vec<Listener>>, //Listener类实现一个函数update
}
impl Server{
pub async fn add_watcher(&self, watcher:Listner) {
self.watcher.borrow().push(watcher);
}
pub async fn background(&self) {
// 这里需要一个无限循环,每秒钟运行一次
// 要求每隔一秒钟产生一个随机数,然后调用update
for w in .... {
w.update(...);
}
}
}
另一个是一个重点,就是需要1秒钟调用每个watcher.update(随机数)。像这种每秒钟运行一次,我感觉理论上并不是多线程,因为本质上就是有时间就通知每个watcher,然后尽量满足把新的watcher加到vector里面。这个能否避免Mutex?
--
FROM 72.199.121.*