RUST Arc

ArcAtomically Reference Counted 的缩写,即"原子引用计数"。

它的作用是:让多个所有者同时持有同一份堆上数据,且可以安全地跨线程使用。

Rust 里 Arc::new(value) 内部就是把数据分配到堆上,然后返回一个指向它的智能指针。对应到 C 大概是:

c 复制代码
  // C 的手动版本
  typedef struct {
      int ref_count;   // Arc 的引用计数
      YourData data;   // 实际数据
  } ArcInner;

  ArcInner* ptr = malloc(sizeof(ArcInner));
  ptr->ref_count = 1;
  ptr->data = ...; 

Arc::clone 就是 ref_count++,Arc 被 drop 就是 ref_count--,降到 0 就 free(ptr)。

区别在于:

  • C 里你得自己维护这套逻辑,容易 double-free 或 use-after-free
  • Rust 的 Arc 把这套计数逻辑封进类型系统,编译器帮你保证正确性,且 ref_count 的加减是原子操作(线程安全)

所以 Arc 本质上就是 线程安全的、自动管理的 malloc + 引用计数。

TODO: here

相关推荐
盒马盒马3 小时前
Rust:Vec
开发语言·rust
doiito3 小时前
【Agent Harness实战】认清现实吧,LLM就是个“超级赌场”,而我们需要的是一套“紧箍咒”
架构·rust
盒马盒马3 小时前
Rust:String
java·前端·rust
techdashen5 小时前
用 Rust 真正发出 Ping:FFI 类型、newtype 与 MaybeUninit
开发语言·后端·rust
星栈独行18 小时前
Makepad 应用如何读文件、调接口、保存数据
前端·程序人生·ui·rust·github
guyoung20 小时前
BoxAgnts 工具系统(7)——Skill 模板、Agent 代理与 Cron 调度
rust·agent·ai编程
分布式存储与RustFS1 天前
基于Rust的国产开源对象存储RustFS:S3 Table对Iceberg数据湖的适配详解
rust·开源·iceberg·对象存储·rustfs·minio平替·s3 table
Jinkxs1 天前
Rust 性能优化全流程:从 flamegraph 定位瓶颈到 unsafe 与 SIMD 加速,响应快 2 倍
开发语言·性能优化·rust
星栈独行1 天前
Rust + Makepad 应用怎么打包发布:Windows、macOS、Linux 全平台交付
windows·程序人生·macos·ui·rust