
C++笔记之既然同一个进程的线程共享资源,访问资源是不是不用加锁,不同进程的线程呢?code review文章目录C++笔记之既然同一个进程的线程共享资源,访问资源是不是不用加锁,不同进程的线程呢?1. 既然同一个进程的线程共享资源,访问资源是不是不用加锁?2. 不同进程的线程呢?架构对比图 (Architecture Comparison)1. 既然同一个进程的线程共享资源,访问资源是不是不用加锁?答案:正是因为线程共享进程资源,才特别需要加锁。为什么?当多个线程同时读写同一个共享资源(例如全局变量、堆内存、文件句柄)时,如果没有任何限制,就会发生数据竞争(Data Race)。后果:因为 CPU 调度线程是随机的,一个线程对数据的修改可能只进行到了一半,就被另一个线程打断并覆盖,从而导致数据崩溃或结果不可预测(这被称为非线程安全)。什么时候不用加锁?资源是只读的(所有线程都只读取,不写入)。数据是线程隔离的(例如使用线程局部存储 Thread Local Storage, TLS,或者每个线程只访问自己栈上的局部变量)。2. 不同进程的线程呢?答案:不同进程的线程不能直接访问彼此的资源,需要通过进程间通信(IPC),通常也需要某种形式的锁或同步机制。内存隔离:操作系统为每个进程分配了独立的虚拟内存地址空间。进程 A 的线程默认根本看不到进程 B 的内存。如何访问?如