线程同步:
用户模式下的:
1.原子访问 同一时刻只允许一个线程访问共享资源(变量), 底层volatile 防止编译优化,实时对特殊地址的稳定访问
2.c++11 #include<atomic> c里的原子访问 std::atomic<int> a(100);
3.关键段(临界区) 同一时刻只允许一个线程 访问一个代码段
(1)直接阻塞 (2)旋转锁 等一会在阻塞 (3)试图进入 完全非阻塞
内核对象
1.信号量 同一时刻只允许指定个数的线程访问代码段
2.事件
3.互斥量 同一时刻只允许一个线程访问一个代码段 初始有权
区别 关键段和互斥量
1.试用范围 关键段只适合同一进程 内核对象可以跨进程
2.安全灵活性 : 内核对象
3.效率:关键段效率高