
简介
该用户还未填写简介
擅长的技术栈
可提供的服务
暂无可提供的服务
在操作系统中,从左向右地址是从小到大的,如果是大端存储,那么数据的从高地址位开始存储,否则是小端的话就从低地址开始存储int i = 1;//大端else {//小端首先#define在预处理阶段就进行处理,而const int是在编译阶段进行处理的第二个就是#define就是进行简单的文本替换,不会对类型安全进行检查,而const int会进行安全检查第三个就是#define调试可能会比较困难,

在多线程编程中,我们会遇到线程同步问题:多个线程操作共享资源时,需要让线程在条件不满足时等待,条件满足时唤醒。互斥锁只能解决线程安全,无法解决线程协同等待 / 唤醒,因此条件变量(Condition) 应运而生。本文将从核心 API→原理→封装→实战模型→踩坑全流程讲解,最终实现多生产者多消费者。条件变量核心配合互斥锁使用,解决线程同步 / 等待唤醒Wait是原子操作:释放锁 → 等待 → 抢锁条

在多线程编程中,我们会遇到线程同步问题:多个线程操作共享资源时,需要让线程在条件不满足时等待,条件满足时唤醒。互斥锁只能解决线程安全,无法解决线程协同等待 / 唤醒,因此条件变量(Condition) 应运而生。本文将从核心 API→原理→封装→实战模型→踩坑全流程讲解,最终实现多生产者多消费者。条件变量核心配合互斥锁使用,解决线程同步 / 等待唤醒Wait是原子操作:释放锁 → 等待 → 抢锁条

4.1 线程封装核心用 std::function 封装线程函数,支持多种函数类型。static 入口函数作为跳板,传递 this 指针,解决 pthread 函数格式要求。join/detach 模式控制线程生命周期,避免内存泄漏。4.2 互斥锁封装核心Mutex 类封装 pthread_mutex_t,负责锁的初始化、加锁、解锁、销毁。禁止锁的拷贝/赋值,保证锁的唯一性。LockGuard 用








