多线程中,上锁的理解
近日,因为需要开发一个功能,需要一个比较复杂的链表的结构,而且因为涉及到多线程的问题,所以在设计锁的时,犯了难。因为没有把逻辑理清楚,在很多没有竞争关系的地方都挂了锁,增加了没必要的消耗,特此总结一下:
上锁区域分析
1,确定体统中,到底有哪些线程,会对该数据结构进行操作
2,划分出他们的竞争区域
3,理出他们的对竞争区域进行操作的函数,包括哪步开始进行对对象进行了写操作。
4,再开始设计锁
改变你能改变的,适应你所不能改变的
近日,因为需要开发一个功能,需要一个比较复杂的链表的结构,而且因为涉及到多线程的问题,所以在设计锁的时,犯了难。因为没有把逻辑理清楚,在很多没有竞争关系的地方都挂了锁,增加了没必要的消耗,特此总结一下:
上锁区域分析
1,确定体统中,到底有哪些线程,会对该数据结构进行操作
2,划分出他们的竞争区域
3,理出他们的对竞争区域进行操作的函数,包括哪步开始进行对对象进行了写操作。
4,再开始设计锁