[发明专利]一种基于多平台的自动互斥量运行方法无效
申请号: | 201010156016.3 | 申请日: | 2010-04-20 |
公开(公告)号: | CN101840351A | 公开(公告)日: | 2010-09-22 |
发明(设计)人: | 蒋宏敏 | 申请(专利权)人: | 深圳市融创天下科技发展有限公司 |
主分类号: | G06F9/46 | 分类号: | G06F9/46 |
代理公司: | 暂无信息 | 代理人: | 暂无信息 |
地址: | 518057 广东省深圳市南山区科技*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 平台 自动 互斥量 运行 方法 | ||
技术领域
本发明多线程的软件开发中多线程资源共享的互斥操作方法,具体涉及一种基于多平台的自动互斥量运行方法。
背景技术
在多线程的软件开发中,会使用到大量的线程共享资源,而对这些资源的访问需要对其进行加锁操作,也就是互斥操作。这就造成需要在代码内使用比较多的互斥量,而互斥量的使用过程中,又由于程序的条件判引起的多出口的问题,造成很容易程序出口处遗漏掉释放互斥量的操作,这种遗漏是比较致命的,若是大型的多线程服务器程序,遗漏之处比较隐秘,会造成程序运行中的死锁情况,而要排除此问题,将会耗费系统工程师大量的精力去进行排除。
在软件开发中,特别是多线程服务器软件的开发中需要大量使用到原子操作,原子操作的实现主要是依靠互斥量,信号量等内核对象的操作。而在不同平台的软件环境下的内核对象的操作也不相同。
由于代码的特性,原子操作的入口点只有一个,而出口点会由条件判断的原因,会有多个,在实际实现中,经常会有遗漏一个出口点,其所占用的互斥量没有被正确释放,造成互斥量的死锁,引起软件运行故障。
发明内容
本发明要解决的技术问题是在多线程的软件开发中,会使用到大量的线程共享资源,而对这些资源的访问需要对其进行加锁操作,也就是互斥操作让系统工程只需关注需要进入互斥量的区间,而不必关心由条件判断引起的多出口的问题。
为解决以上技术问题,本发明提供一种基于多平台的自动互斥量运行方法,利用C++对象的创建和销毁会调用构造函数和析构函数的特性,将进入互斥量的操作放在构造函数里,将退出互斥量的操作放在析构函数里,这样在创建自动互斥对象的时候会进行进锁操作,而在销毁自动互斥对象的时候会进行解锁操作。
优选地,具体步骤为:首先对系统平台进行互斥量封装,这个封装对象为CcoreMutex,并实现lock和unlock的功能接口,Lock为获得进入互斥量的接口,unlock为释放互斥量的接口,再实现一个CAutoCoreMutex的自动互斥量,构造参数中传入CcoreMutex的指针,检查指针有效性后进行lock操作,析构函数中对该指针进行unlock操作。
优选地,自动互斥量对象的构造函数中进行进入互斥量操作,在析构中进行退出互斥量操作,再利用临时变量的生存期,在一段要使用原子操作的代码开始处申明一个自动互斥对象后,这样在自动互斥对象的生存期到达后,该对象会被销毁,从而调用析构里释放互斥对象的操作。
优选地,首先分别对UINX系统,以及WIN32系统平台进行互斥量的封装。
优选地,由宏来区分UINX系统以及WIN32项操作系统平台。
该发明可以有效地解决释放互斥量的多出口点问题。减少原子操作的实现步骤,弱化原子操作实现的平台相关性。具体功能是自动对所要进行的代码区进行互斥操作,并能够在代码区结束后,进行自动释放。
附图说明
无附图。
具体实施方式
本发明方法针对该技术的多平台特性,所以,首先分别对UINX系统,以及WIN32系统进行互斥量的封装。假定这个封装对象为CcoreMutex。并实现lock和unlock的功能接口。Lock为获得进入互斥量的接口,unlock为释放互斥量的接口,再实现一个CAutoCoreMutex的自动互斥量,构造参数中传入CcoreMutex的指针,检查指针有效性后进行lock操作,析构函数中对该指针进行unlock操作。由Win32和Linux分别进行互斥量的封装,由宏来区分各项操作系统平台。
在自动互斥量对象的构造函数中进行进入互斥量操作,在析构中进行退出互斥量操作。再利用临时变量的生存期,在一段要使用原子操作的代码开始处申明一个自动互斥对象后,这样在自动互斥对象的生存期到达后,该对象会被销毁,从而调用析构里释放互斥对象的操作。
使用方式如下代码示例:
//定义一个互斥量对象。
CcoreMutex mutex;
{
//构造自动互斥量对象,对自动进行锁操作
CautoCoreMutex autolock(&mutex);
需要进行原子操作的代码区
}
//前面定义的自动互斥量的生存期到达,系统会对autolock进行销毁,会
调用析构函数,所以unlock会被执行。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于深圳市融创天下科技发展有限公司,未经深圳市融创天下科技发展有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201010156016.3/2.html,转载请声明来源钻瓜专利网。