- 博客(3)
- 收藏
- 关注
原创 《手撕红黑树:一个通用的 C 语言实现》
本文将带着你手撕一个完整的、泛型的红黑树 C 语言实现。代码支持任意类型的 key 和 value,并提供了初始化、销毁、增删改查等标准接口。我们不仅会贴出核心代码,还会详细分析旋转、插入修复、删除修复等复杂逻辑。
2026-05-22 16:17:23
302
原创 《手写一个C语言线程池:从零实现到原理剖析》
本文将通过一个完整的C语言实现,带你深入理解线程池的工作原理,包括任务队列、工作者线程、同步机制等核心模块。当任务队列为空且未收到终止信号时,为了让其他线程可以继续取任务,需调用条件变量(cond)进入等待,释放锁,提高并发度,任务执行过程中不占用锁,避免了长时间阻塞其他线程。添加任务的逻辑就是将任务添加到线程池任务队列的头部,由于使用了条件变量cond,在没有任务时,工作线程会阻塞等待其它线程的唤醒,所以需要调用pthread_cond_signal函数唤醒一个工作线程,插入前也需加锁保证线程安全。
2026-03-11 16:53:28
344
原创 多线程并发锁的方案
本文介绍了C语言中三种主要的线程同步机制:1) 互斥锁(pthread_mutex),适用于临界区执行时间较长的场景,线程获取不到锁时会休眠;2) 自旋锁(pthread_spinlock),适用于临界区执行极快的场景,线程会循环检查锁状态;3) 原子指令(如CAS),提供硬件级别的原子操作。此外还详细讲解了条件变量与互斥锁的配合使用模式,通过pthread_cond_wait/pthread_cond_signal实现高效线程通信,并给出了生产者-消费者问题的标准实现范式。每种机制都配有相应的初始化、加锁
2026-03-11 15:06:23
538
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅