[发明专利]异常处理方法、远程泊车辅助系统及计算机存储介质有效
| 申请号: | 202011239679.1 | 申请日: | 2020-11-09 |
| 公开(公告)号: | CN112445642B | 公开(公告)日: | 2023-05-16 |
| 发明(设计)人: | 白勍 | 申请(专利权)人: | 浙江吉利控股集团有限公司;宁波吉利汽车研究开发有限公司 |
| 主分类号: | G06F11/07 | 分类号: | G06F11/07 |
| 代理公司: | 上海波拓知识产权代理有限公司 31264 | 代理人: | 孙燕娟 |
| 地址: | 310051 浙江*** | 国省代码: | 浙江;33 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 异常 处理 方法 远程 泊车 辅助 系统 计算机 存储 介质 | ||
本发明提供了一种异常处理方法、远程泊车辅助系统及计算机存储介质,异常处理方法包括:对进程和工作线程依次初始化后,在工作线程内部运行C语言异常处理原语;根据工作线程确定对应的异常栈链列表,在异常栈链列表创建异常帧以存储异常;调用抛出异常帧的函数以捕获异常,处理异常后清除异常帧。本方案实现了C语言多线程的统一异常处理,通过C语言异常处理原语能快速、高效地完成各线程的异常处理,保证多线程能安全访问异常处理过程。
技术领域
本发明涉及数据处理领域,尤其涉及一种异常处理方法、远程泊车辅助系统及计算机存储介质。
背景技术
现有技术中,远程泊车辅助系统的应用层包括多个功能模块,各模块都有自己的核心工作线程,它们的业务逻辑处理也都在各自的工作线程内部完成,但没有定义一套完整的Failsafe异常处理框架,可以让多个功能模块的工作线程同时捕获和处理各自的异常和错误。考虑到嵌入式软硬件资源有限,远程泊车辅助系统采用C语言编写。C语言本身没有Failsafe的异常处理原语和处理机制,无法满足各个功能模块对异常进行捕获处理的实际需求。
发明内容
有鉴于此,本发明提供了一种异常处理方法、远程泊车辅助系统及计算机存储介质,能通过C语言实现多线程的统一异常处理。
第一方面,本发明提供了一种异常处理方法,包括:
对进程和工作线程依次初始化后,在所述工作线程内部运行C语言异常处理原语;
根据所述工作线程确定对应的异常栈链列表,在所述异常栈链列表创建异常帧以存储异常;
调用抛出异常帧的函数以捕获异常,处理所述异常后清除所述异常帧。
其中,所述对进程和工作线程依次初始化,包括:
对内存池初始化;
调用异常环境管理器创建全局线程互斥对象以及全局map对象,初始化所述全局map对象;
在当前进程创建工作线程;
在所述工作线程调用所述异常环境管理器进入线程锁,创建异常环境上下文对象和异常栈链列表;
创建map结构体对象,所述map结构体对象用于存储异常状态节点;
初始化所述map结构体对象。
其中,所述map结构体对象为红黑树结构,所述map结构体对象的键值为所述工作线程的名称,所述map结构体对象的取值为所述工作线程的上下文对象,所述上下文对象中包括所述异常状态节点。
其中,所述根据所述工作线程确定对应的异常栈链列表,在所述异常栈链列表创建异常帧以存储异常,包括:
根据所述工作线程的名称获取异常处理上下文对象;
在所述异常处理上下文对象中查找输入异常状态节点;
若存在输入异常状态节点,且所述输入异常状态节点等于当前异常状态节点,则进入线程锁,初始化当前异常状态节点后,离开所述线程锁;
若不存在输入异常状态节点,则进入线程锁,创建并初始化异常帧,在所述异常帧中创建异常状态节点,将所述异常状态节点加入所述异常栈链列表后,离开所述线程锁。
其中,所述调用抛出异常帧的函数以捕获异常,包括:
判断所述异常帧的当前异常状态节点是否存在且所述异常帧为已尝试和正在捕获状态;
若是,则继续处理下一异常状态节点;
若否,则打印所述异常栈链列表中的所有异常帧,并对所述工作线程和所述进程依次反初始化。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于浙江吉利控股集团有限公司;宁波吉利汽车研究开发有限公司,未经浙江吉利控股集团有限公司;宁波吉利汽车研究开发有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202011239679.1/2.html,转载请声明来源钻瓜专利网。





