天天看点

Linux 内核编程基本功之内核同步与互斥锁mutex

digoal

2016-11-07

postgresql , 同步流复制 , mutex , linux

在使用postgresql实现同步流复制时,在主节点发现有大量的mutex,导致了写并发被限制。

本文为转载文章

<a href="http://blog.csdn.net/cug_fish_2009/article/details/6126414">http://blog.csdn.net/cug_fish_2009/article/details/6126414</a>

互斥锁的使用也是保持内核临界区的同步的,互斥锁可以说源于信号量,信号量设置计数器可以容许n个进程并发的访问临界区,而互斥锁不行,只能容许每次一个进程访问,也就是计数器值为1的信号量,

可以这么理解。互斥锁和自旋锁有不同(显然的),互斥锁在中断处理程序中和可延迟函数中都不能使用,因为它是可以睡眠的,只能在进程上下文或者软中断上下文才能使用。

2-1-1、mutex结构体:

2-1-2、mutex_waiter结构体:

2-2-1、初始化:

2-2-2、锁住:

2-2-3、释放锁:

互斥锁是比较难理解的,希望多花点时间,多看点资料,结合一些具体情况。

继续阅读