一次Rust重写基础软件的实践(一)

💡 原文中文,约3900字,阅读约需10分钟。
📝

内容提要

本文介绍了作者将一款C语言开发的基础软件转化为Rust语言的过程中遇到的问题和解决方案。作者在转化过程中遇到了与CAS操作实现相关的问题,提出了两种解决方案:使用asm!宏处理不同芯片平台的汇编代码,或者使用Rust代码对特定操作进行实现。作者选择了第二种方案,并给出了具体的代码实现。最后,作者指出两种解决方案各有利弊,需要根据实际应用场景进行选择。

🎯

关键要点

  • 作者受到谷歌使用Rust重写Android系统的启发,尝试将C语言开发的软件转化为Rust语言。
  • 在转化过程中遇到与CAS操作实现相关的问题,CAS是多线程/协程中用于实现同步的原子指令。
  • 不同芯片平台的CAS操作汇编代码不同,且同一平台在不同操作系统上的实现也可能不同。
  • 作者提出两种解决方案:使用asm!宏处理不同芯片平台的汇编代码,或使用Rust代码实现特定操作。
  • 第一种方案简单,但维护复杂,需考虑不同平台的汇编代码和逻辑控制。
  • 第二种方案通过Rust代码实现与汇编指令相同的逻辑,消除不同平台的汇编差异。
  • 作者选择第二种方案,给出了具体的Rust代码实现CAS操作的示例。
  • 结论是两种方案各有利弊,需结合实际应用场景进行选择。
  • 作者在云计算研发领域有丰富经验,目前在Intel中国担任云原生开发工程师。
➡️

继续阅读