在硬实时编程中,我把Rust看作是C/C++的替代品。我发现了两个可能的问题:
1)如何避免调用Rust的GC?我看到了这样的建议:我可以通过简单地避免托管指针和非实时安全库(例如Rust的标准库)来做到这一点--这足以保证我的实时任务永远不会调用GC吗?
2)如何将实时任务映射到OS线程?我知道Rust的标准库实现N:M并发模型,但实时任务必须与一个OS线程直接对应。有办法产生这种类型的线程吗?
发布于 2013-10-27 00:14:48
1)如何避免调用Rust的GC?我看到了这样的建议:我可以通过简单地避免托管指针和非实时安全库(例如Rust的标准库)来做到这一点--这足以保证我的实时任务永远不会调用GC吗?
是的,避免@将避免GC。(目前,铁锈并没有实际实现GC,所以所有代码都会自动避免,目前是这样。)
2)如何将实时任务映射到OS线程?我知道Rust的标准库实现N:M并发模型,但实时任务必须与一个OS线程直接对应。有办法产生这种类型的线程吗?
std::task::spawn_sched(std::task::SingleThreaded, function) (当#10095着陆时,特殊的格式将被修复)。
use std::task;
fn main() {
do task::spawn_sched(task::SingleThreaded) {
println("on my own thread");
}
}尽管如此,Rust的运行时和标准库并不是为硬实时编程设置的(目前为止),但是您可以使用#[no_std] (example)运行“无时间运行”,这给您提供了与C/C++完全相同的情况、模块化语言差异和缺乏标准库(尽管Rust's FFI意味着您可以相对轻松地调用libc,rust-core项目被设计成一个最小的stdlib,它甚至不需要libc工作)。
https://stackoverflow.com/questions/19612801
复制相似问题