seqlock和rwlock

最近看《linux内核设计与实现》时看到一种叫seqlock的锁,其作用与rwlock有相仿的功能。 在读写频率不对等的情况下,使用普通的互斥锁显然并不是一个好主意。 由于读取内存中的数据并不会产生副作用(嵌入式除外),因此在数据不改变的情况下,多个读操作可以并发执行。 在读频率远大于写频率时,如果仅仅将写操作与读操作互斥,读与读之间并发执行,显然可以大幅提高程序的性能。 所以在这个时候,读写锁应运而生。使用读写锁时,多个读操作可以并发进行,但是只要有读操作在进行,……

POSIX线程中的条件变量与互斥量

在看到UNP第26章时发现对于linux下的线程模型还很不是非常了解. 翻到APUE的第11章, 发现POSIX线程中通用的两个线程交互与同步手段有互斥量和条件变量两种. 对于这两种同步手段我想了很久也没想到每种到底适用于哪些场景, 甚至于我觉得几乎mutex就够完成绝大部分线程同步功能了. 以前在写代码时都是自然而然的用出来了, 也从来没有认真总结过到底什么情况下使用Mutex, 什么下使用条件变量(类似Windows下的事件). 在google到这篇文章终于豁然开朗. 其实问题很简单, 也许换个描述方式……