[发明专利]DWG文件并行读取方法、电子设备和存储介质在审
申请号: | 201910439155.8 | 申请日: | 2019-05-24 |
公开(公告)号: | CN110162401A | 公开(公告)日: | 2019-08-23 |
发明(设计)人: | 何祎 | 申请(专利权)人: | 广州中望龙腾软件股份有限公司 |
主分类号: | G06F9/50 | 分类号: | G06F9/50;G06F16/16 |
代理公司: | 广州市越秀区哲力专利商标事务所(普通合伙) 44288 | 代理人: | 曾嘉仪;徐朝荣 |
地址: | 510000 广东省广州市天*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 数据包 并行读取 文件流 延迟处理队列 工作线程 数据封装 数据位置 数据包交互 处理方式 存储介质 电子设备 动态延迟 对象数据 文件读取 文件类型 预设条件 句柄表 遍历 创建 队列 解析 修正 访问 | ||
1.DWG文件并行读取方法,其特征在于,包括如下步骤:
遍历步骤:依次遍历DWG文件中的句柄表;所述句柄表包含若干个句柄,所述句柄为对象的唯一标识符;
获取步骤:获取当前遍历的所述对象在文件流片段中的数据位置和数据长度;
创建步骤:根据所述文件流片段以及对象在所述文件流片段中的数据位置和数据长度创建对应的数据包,所述数据包包括所述对象的对象数据和对应的文件流片段;
加入步骤:将当前所述对象对应的数据包加入生产者列队,并当满足预设条件时,将生产者列队中的数据包交互至消费者列队中;
读取步骤:创建多个工作线程,以使所述工作线程访问消费者队列中的数据包,并根据所述数据包中的对象类型判断是否支持多线程并行读取,若是,则读取所述数据包中的对象数据,并将所述数据包中的依赖数据封装加入延迟处理队列;否则,所述数据包加入延迟处理队列;
解析步骤:对所述延迟处理队列所述数据包进行解析,并对所述数据包中的对象数据进行修正。
2.如权利要求1所述的DWG文件并行读取方法,其特征在于,所述预设条件为生产者队列中的数据包数量超过阈值,且消费者队列中的数据包为0。
3.如权利要求2所述的DWG文件并行读取方法,其特征在于,所述阈值为100。
4.如权利要求1所述的DWG文件并行读取方法,其特征在于,在遍历步骤之前,还执行判断步骤:判断DWG文件的版本格式是否为R18以上,若是,则执行遍历步骤,否则,对所述DWG文件单线程读取。
5.如权利要求1所述的DWG文件并行读取方法,其特征在于,在读取步骤中,根据计算机CPU的核数确定工作线程的数量。
6.一种电子设备,包括存储器、处理器以及存储在存储器上并可在处理器运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现以下步骤:
遍历步骤:依次遍历DWG文件中的句柄表;所述句柄表包含若干个句柄,所述句柄为对象的唯一标识符;
获取步骤:获取当前遍历的对象在文件流片段中的数据位置和数据长度;
创建步骤:根据所述文件流片段以及对象在所述文件流片段中的数据位置和数据长度创建对应的数据包,所述数据包包括所述对象的对象数据和对应的文件流片段;
加入步骤:将当前对象对应的数据包加入生产者列队,并当满足预设条件时,将生产者列队中的数据包交互至消费者列队中;
读取步骤:创建多个工作线程,以使工作线程访问消费者队列中的数据包,并根据数据包中的对象类型判断是否支持多线程并行读取,若是,则读取该数据包中的对象数据,并将数据包中的依赖数据封装加入延迟处理队列;否则,将数据包加入延迟处理队列;
解析步骤:对延迟处理队列的数据包进行解析,并根据所述数据封装对数据包中的对象数据进行修正。
7.如权利要求6所述的电子设备,其特征在于,所述预设条件为生产者队列中的数据包超过阈值,且消费者队列中的数据包为0。
8.如权利要求7所述的电子设备,其特征在于,所述阈值为100。
9.如权利要求6所述的电子设备,其特征在于,在遍历步骤之前,还执行判断步骤:判断DWG文件的版本格式是否为R18以上,若是,则执行遍历步骤,否则,对所述DWG文件单线程读取。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于:所述计算机程序被处理器执行时实现如权利要求1-5任意一项所述的DWG文件并行读取方法。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于广州中望龙腾软件股份有限公司,未经广州中望龙腾软件股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201910439155.8/1.html,转载请声明来源钻瓜专利网。