Chapter 3. Locking system

       Kamailio提供了一套有着简单接口的用户锁系统,以便我们在开发时使用。它的根元素是一个可以被锁定或者解锁的互斥信号量。SysV和POSIX提供的其他同步机制都不需要。

       锁可以被当做简单变量或者是锁集合(数组)使用。为了提高速度,默认情况下,由机器特定的代码实现锁。 如果机器的架构不明,Kamailio将使用SysV信号量。

1. Simple Locks API

头文件:locking.h

锁类型声明:gen_lock_t

创建锁:gen_lock_t* lock_allock();

释放锁:void lock_dealloc(gen_lock_t *lock);

初始化锁:gen_lock_t* lock_init(gen_lock_t *lock);

销毁锁:void lock_destroy(gen_lock_t *lock);

加锁:void lock_get(gen_lock_t *lock);  或者  int lock_try(gen_lock_t *lock);

解锁:void lock_release(gen_lock_t *lock);

2. Lock Set API

The lock set is an array of gen_lock_t.

头文件:locking.h

锁类型声明:gen_lock_set_t

创建锁:gen_lock_set_t* lock_set_alloc();

释放锁:void lock_set_dealloc(gen_lock_set_t *set);

初始化锁:gen_lock_set_t* lock_set_init(gen_lock_set_t *set); 

销毁锁:void lock_set_destroy(gen_lock_set_t *set);

加锁:void lock_set_get(gen_lock_set_t *set, int index); 或者 int lock_set_try(gen_lock_set_t *set, int index);

解锁:void lock_set_release(gen_lock_set_t *set, int index);

总结:以上两种类型的所变量,都必须在共享内存中申请空间,以便在kamailio中跨进程访问。

故障排除方法:可以用top或者ps命令获取进程PID,然后由gdb命令在命令行调试进程,使用bt命令查看进程调用堆栈,确认哪里没有解锁。

1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看REAdMe.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看REAdMe.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看READme.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 、 1资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看READmE.文件(md如有),本项目仅用作交流学习参考,请切勿用于商业用途。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值