关键词:
【中文标题】如何在 Rust 中进行实时编程?【英文标题】:How do I do realtime programming in Rust? 【发布时间】:2013-10-26 22:58:51 【问题描述】:我正在将 Rust 视为硬实时编程中 C/C++ 的替代品。我发现了两个可能的问题:
1) 如何避免调用 Rust 的 GC?我已经看到建议我可以通过简单地避免托管指针和非实时安全库(例如 Rust 的标准库)来做到这一点——这足以保证我的实时任务永远不会调用 GC 吗?
2) 如何将我的实时任务映射到操作系统线程?我知道 Rust 的标准库实现了 N:M 并发模型,但实时任务必须与一个 OS 线程直接对应。有没有办法产生这种类型的线程?
【问题讨论】:
【参考方案1】:1) 如何避免调用 Rust 的 GC?我已经看到建议我可以通过简单地避免托管指针和非实时安全库(例如 Rust 的标准库)来做到这一点——这足以保证我的实时任务永远不会调用 GC 吗?
是的,避免 @
将避免 GC。 (Rust 目前实际上并没有实现 GC,所以现在所有代码都会自动避免它。)
2) 如何将我的实时任务映射到操作系统线程?我知道 Rust 的标准库实现了 N:M 并发模型,但实时任务必须与一个 OS 线程直接对应。有没有办法产生这种类型的线程?
@987654321@(@987654322@, function)
(当#10095登陆时,特殊格式将被修复),例如
use std::task;
fn main()
do task::spawn_sched(task::SingleThreaded)
println("on my own thread");
也就是说,Rust 的运行时和标准库还没有为 hard-实时编程设置,但您可以使用 #[no_std]
(example) 运行“runtimeless”你和 C/C++ 完全一样的情况,模语言差异和缺乏标准库(虽然Rust's FFI 意味着你可以相对容易地调用 libc,而rust-core 项目被设计为一个最小的 stdlib,它不'甚至不需要 libc 才能工作)。
【讨论】:
我对@987654331@的理解是它适用于整个箱子。我可以将#[no_std]
crate 中的实时代码编译到库中,然后将其与我的应用程序的其余部分链接,这样我就可以将 Rust 的运行时和标准库用于非实时代码吗?
它是板条箱范围的;是的,这可能是可能的,但我从未尝试过。
谢谢。我继续学习了足够多的 Rust 来测试它,并且它有效。如果我认为它会这么简单,我早就自己测试了。如何在 Rust Diesel 中使用时间戳和间隔进行算术运算
】如何在RustDiesel中使用时间戳和间隔进行算术运算【英文标题】:HowtodoarithmeticwithtimestampsandintervalsinRustDiesel【发布时间】:2020-05-1606:24:47【问题描述】:我一直在尝试使用过滤器表达式构建柴油查询,这些表达式对时间戳和时... 查看详情
如何在 Rust 中修复“.. 在循环的上一次迭代中可变地借用”?
】如何在Rust中修复“..在循环的上一次迭代中可变地借用”?【英文标题】:Howtofix"..wasmutablyborrowedhereinthepreviousiterationoftheloop"inRust?【发布时间】:2021-05-1522:55:41【问题描述】:我必须对键进行迭代,通过键在HashMap中找... 查看详情
如何获取用于在我的 Rust Tonic 服务中进行身份验证的客户端证书?
】如何获取用于在我的RustTonic服务中进行身份验证的客户端证书?【英文标题】:HowtoobtainclientcertificateusedtoauthenticateinmyRustTonicservice?【发布时间】:2021-06-1713:11:32【问题描述】:在我的RustTonic设置中,我在客户端和服务器之间... 查看详情
c还是rust:选择哪个用于硬件抽象编程
...选择。通常会将其与C的抽象级别相比较。本文介绍了Rust如何通过多种方式处理按位运算,并提供了既安全又易于使用的解决方案。在系统编程领域,你可能经常需要编写硬件驱动程序或直接与内存映射设备进行交互,而这些交... 查看详情
rust:一个不再有c/c++的,实现安全实时软件的未来
https://www.infoq.cn/article/dgKDBiPl7KID0dyaE7Wl?utm_source=related_read&utm_medium=articleRust 作为新兴编程语言深受Haskell和OCaml等函数式编程语言的影响,使得它在语法上与C++类似,但在语义上则完全不同。Rust是静态类型语言,同时具有完... 查看详情
如何在 Rust 中运行任何测试之前运行设置代码?
】如何在Rust中运行任何测试之前运行设置代码?【英文标题】:HowtorunsetupcodebeforeanytestsruninRust?【发布时间】:2019-09-1907:39:04【问题描述】:我有一个Rust应用程序(一个简单的解释器),需要在环境可用之前进行一些设置(初... 查看详情
如何在 Rust 中传递对可变数据的引用?
】如何在Rust中传递对可变数据的引用?【英文标题】:HowdoIpassareferencetomutabledatainRust?【发布时间】:2014-05-0921:41:25【问题描述】:我想在堆栈上创建一个可变结构并从辅助函数中对其进行变异。#[derive(Debug)]structGamescore:u32,fnaddPo... 查看详情
2023年rust发展如何?
1.引言Rust是一种系统编程语言,它注重安全、并发和内存效率。自2010年首次发布以来,Rust一直在快速发展,吸引了越来越多的开发者加入其社区。Rust语言的设计目标是提供一种安全、并发和实用的语言,它可以满足系统编程的... 查看详情
rust学习总结——初识rust,作为新势力它的前景如何?
前言在StackOverflow2020调查中,Rust被选为最受欢迎的编程语言第一名,这要归功于86%的开发人员表示他们会继续使用它。对于语言创造者来说,这并不是什么新鲜事——Rust自2016年以来一直在这项调查中获胜。在Tiobe指... 查看详情
如何在 Python 中进行实时语音活动检测?
】如何在Python中进行实时语音活动检测?【英文标题】:HowcanIdoreal-timevoiceactivitydetectioninPython?【发布时间】:2020-07-0500:23:53【问题描述】:我正在对录制的音频文件执行语音活动检测,以检测波形中的语音与非语音部分。分类... 查看详情
如何在 android 实时通话期间以编程方式发送 Dtmf 音?
】如何在android实时通话期间以编程方式发送Dtmf音?【英文标题】:howtosendDtmftoneprogrammaticallyduringalivecallinandroid?【发布时间】:2016-01-1310:17:18【问题描述】:我想在我的应用程序中以编程方式发送DTMF音调。在搜索时我找到了一... 查看详情
你如何在 Substrate 特定类型和 Rust 原始类型之间进行转换?
】你如何在Substrate特定类型和Rust原始类型之间进行转换?【英文标题】:HowdoyouconvertbetweenSubstratespecifictypesandRustprimitivetypes?【发布时间】:2019-09-2813:41:45【问题描述】:使用Substrate区块链框架,我如何在Substrate特定类型和Rust原... 查看详情
如何使用套接字编程在两个 android 手机之间创建实时音频流..?
】如何使用套接字编程在两个android手机之间创建实时音频流..?【英文标题】:howtocreateliveaudiostreamingbetweentwoandroidmobilesusingsocketprogramming..?【发布时间】:2013-01-0104:01:59【问题描述】:我正在尝试开发一个android应用程序,该应... 查看详情
如何在 div 标签中进行“实时”文本更改 [重复]
】如何在div标签中进行“实时”文本更改[重复]【英文标题】:Howcanimakea"Realtime"textchangeindivtag[duplicate]【发布时间】:2020-08-1309:29:20【问题描述】:所以,我有这个示例代码:<textareaid="input"onkeydown="pressed()"></textarea... 查看详情
如何在 Xcode 中应用 Deeplab V3 进行实时分割?
】如何在Xcode中应用DeeplabV3进行实时分割?【英文标题】:HowtoapplyDeeplabV3inXcodeforrealtimesegmentation?【发布时间】:2019-09-3005:41:48【问题描述】:其实我是swift和DeeplabV3的初学者。我真的不知道如何在Xcode上集成deeplab。我只想在ios中... 查看详情
rust内存管理(代码片段)
...堆上分配的内存(可以理解为 malloc 出来的内存)进行管理,不外乎两种方式:使用者在代码中显示调用函数,回收这部分内存;或者引入自动的垃圾 查看详情
rust编程语言〇
...程语言〇Rust官方:rust官方支持的环境我这里使用idea进行配置idea安装Rust插件需要安装两个插件intellij-rust和intellij-toml,intellij-rust是Rust语言插件,intellij-toml是为Toml语言的插件,是为cargo的配置文件cargo.toml使用。安装方... 查看详情
如何在 c# mvc 代码中进行实时搜索后使用值更新无序列表?
】如何在c#mvc代码中进行实时搜索后使用值更新无序列表?【英文标题】:HowdoIupdateanUnorderedListwithvaluesafteraLivesearchinc#mvccode?【发布时间】:2021-10-1808:25:15【问题描述】:我想在文本框中输入内容时进行实时搜索以过滤结果。页... 查看详情