KyrieChao

2026-08-04 周一 · 并发初通

2026-08-04

技术

C 语言

学习内容:C 语言 Day8 笔记——流程控制结构(下)

break 与 continue

语句 作用
break 结束当前整个循环
continue 跳过本次循环剩余部分,进入下一次迭代

error vs warning

类型 严重程度 编译结果
error 致命语法错误 编译失败,不生成可执行文件
warning 轻微问题 编译成功,但不要无视

真正的噩梦是运行时 Bug——编译通过,运行结果却不对。编译建议:gcc -Wall 严格检查。

goto 语句

  • 无条件跳转到标签(Label)处执行
  • 也能实现循环,但不要滥用——会严重降低代码可读性
  • 不能跨函数跳转

Rust

学习内容:Rust Day9 笔记——并发深入练习

今天把线程相关的每个概念拆开单独练了一遍,感觉有些理解了。之前 Rustlings threads 是照着注释填空,知其然不知其所以然,今天分 7 步逐个跑通:

  1. spawn + join — 最基本的线程启停,join 阻塞等待子线程结束
  2. move — 所有权移入线程,理解为什么必须这样
  3. Arc — 多线程共享只读数据,Arc::clone 只加引用计数
  4. Arc<Mutex<T>> — 多线程读写同一份数据(10 线程各 +1)
  5. mpsc::channel — 线程间发消息,关键细节:必须 drop(tx) 否则 rx 永远等不到结束
  6. 死锁 — 刻意写了一个死锁:两个线程按相反顺序拿两把锁,互相等待
  7. AtomicUsize — 简单计数不用锁,硬件原子指令

并发选型速查

需求 方案
只读共享 Arc<T>
读写共享 Arc<Mutex<T>>
线程间传数据 mpsc::channel
简单计数 AtomicUsize
启动后台任务 thread::spawn + join

核心认知:Arc 解决共享、Mutex 解决互斥、channel 解决通信——三件事分清楚之后组合起来就不神秘了。

明日计划

  1. C 语言:循环结构作业 + 继续跟课堂
  2. Rust:并发练习加入错误处理(lock() 返回的 Result 不只用 unwrap),有时间看看 RwLock