在并发编程中,'锁'是解决资源竞争、保证数据一致性的核心工具 —— 无论是多线程共享进程内资源,还是多进程跨地址空间协作,都需要通过锁来规范临界区的访问逻辑。本文结合 C/C++ 开发场景(含 Linux 系统调用、C++11 + 标准库),系统梳理多线程 / 多进程中常用锁的种类、核心特点,并给出实战选型建议。
一、核心概念铺垫
在讲锁之前,先明确两个关键前提,避免混淆:
- 临界区:并发场景中多个执行流(线程 / 进程)共同访问的共享资源(如全局变量、文件、网络连接),是锁的保护对象。
- 线程 vs 进程:
- 多线程:共享同一进程的地址空间,锁可直接基于进程内内存实现(开销小);
- 多进程:地址空间独立,锁需借助'跨进程共享资源'(如文件、共享内存)实现(开销略大)。

