1.临界区,竞争条件,同步
临界区是访问和操作共享数据的代码段
竞争条件一般是指两个线程处于同一代码段
避免并发和防止竞争条件叫同步。
2.并发的原因,不太理解
中断
软中断和tasklet
内核抢占
睡眠和及与用户空间的同步
对称多处理器
加锁其实不难,难的在发现某个地方要加锁。锁是一个原子操作。
3.防止死锁
加锁的顺序要一致,有多个锁时,访问临界区的线程要保持加锁的顺序一致
不要重复请求同一个锁,这里指在一个线程里,未释放就请求同一个锁
4.考虑锁的细粒度(fine-grained)
比如对一个链表,对整个链表,对每一个元素,对元素的每一个成员加锁,可以认为锁的细粒度不同,越来越细。