文章目录
windows 和 linux
- Linux系统抢占式的多线程环境和Windows不一样。
Linux系统下是多用户级线程,内核并不清楚多线程的存在,只是用一个叫做"运行时系统"完成对于多线程的管控,没有专门的线程调度算法;而Windows下是多核心级线程,内核可以直接对线程进行管理,线程的切换是以内核作为支持,线程是调度的基本单位。
原子访问
-
windows下有原子锁系列函数, 关键段, 关键段(带旋转锁) 读写锁等等
内核对象有mutex , 信号量 等等
极其精细 -
std::atomic<T>是C++11及以后版本中提供的一种原子类型,它保证了对其进行的操作(如加载、存储、交换、比较交换等)在多线程环境下是原子的,即这些操作在执行过程中不会被其他线程打断,从而保证了多线程环境下的数据安全性。这种原子类型在Linux下同样有效,因为Linux也支持C++标准库,并且std::atomic的实现通常与底层硬件和操作系统相关,但无论是Windows还是Linux,其原理都是利用底层硬件提供的原子操作指令来实现的
C++标准库中提供了多种线程同步机制,这些机制帮助开发者确保多个线程之间对共享资源的正确访问,避免竞态条件和数据不一致的问题。以下是C++标准库中提供的一些主要线程同步函数和类: -
互斥锁(Mutexes)
std::mutex: 最基本的互斥锁,用于保护共享资源免受同时访问。
std::timed_mutex 和 std::recursive_mutex: 提供了额外的功能,如尝试锁定和递归锁定。
std::unique_lock: 是一个互斥锁包装器,提供了更灵活的锁定和解锁机制。
std::lock_guard: 是一个简单的RAII(资源获取即初始化)包装器,用于在作用域内自动管理锁的生命周期。 -
条件
6474



被折叠的 条评论
为什么被折叠?



