首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Rust中进行实时编程?

如何在Rust中进行实时编程?
EN

Stack Overflow用户
提问于 2013-10-26 22:58:51
回答 1查看 6.2K关注 0票数 7

在硬实时编程中,我把Rust看作是C/C++的替代品。我发现了两个可能的问题:

1)如何避免调用Rust的GC?我看到了这样的建议:我可以通过简单地避免托管指针和非实时安全库(例如Rust的标准库)来做到这一点--这足以保证我的实时任务永远不会调用GC吗?

2)如何将实时任务映射到OS线程?我知道Rust的标准库实现N:M并发模型,但实时任务必须与一个OS线程直接对应。有办法产生这种类型的线程吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 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着陆时,特殊的格式将被修复)。

代码语言:javascript
复制
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工作)。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19612801

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档