(19)国家知识产权局
(12)发明 专利
(10)授权公告 号
(45)授权公告日
(21)申请 号 202210664895.3
(22)申请日 2022.06.14
(65)同一申请的已公布的文献号
申请公布号 CN 114757057 A
(43)申请公布日 2022.07.15
(73)专利权人 中国人民解 放军国防科技大 学
地址 410073 湖南省长 沙市开福区德雅路
109号
(72)发明人 陈怀进 齐锋 金玮 柯明星
殷何卿 龚燕 陈皖玉
(74)专利代理 机构 中国和平利用军工技 术协会
专利中心 1 1215
专利代理师 刘光德
(51)Int.Cl.
G06F 30/20(2020.01)G06F 9/50(2006.01)
(56)对比文件
CN 113312802 A,2021.08.27
CN 111597035 A,2020.08.28
CN 111177893 A,2020.0 5.19
CN 1073158 89 A,2017.1 1.03
CN 107193 639 A,2017.09.2 2
US 2013304442 A1,2013.1 1.14
CN 103377082 A,2013.10.3 0
谭亚新等.“一种基于作战编成并行仿真方
法及其实现 ”. 《系统仿真学报》 .2019,
窦林涛等.平行仿真技 术在指控系统中的应
用构想. 《指挥控制与仿真》 .2017,(第01期),
审查员 宁雪莹
(54)发明名称
一种基于混合推进的多线程并行作战仿真
方法和系统
(57)摘要
本发明公开一种基于混合推进的多线程并
行作战仿真方法和系统。 方法包括: 创建引擎服
务主线程; 引擎服务主线程获取作战方案中的实
体数量, 创建第一分线程池; 各个第一分线程并
行执行加载各个实体信息和仿真作战任务, 分别
存储于实体队列和事件队列; 引擎服务主线程销
毁第一分线程池, 获取获取时钟跳变时段集; 引
擎服务主线程创建第二分线程池, 并将各个仿真
作战任务分配给第二分线程池中各个第二分线
程; 引擎服务主线程设置仿真参数, 并确定当前
仿真时刻; 各个第二分线程对对应的分事件队列
中各个仿真作战任务并行执行仿真, 直至仿真作
战任务为止; 引擎服务主线程销毁第二分线程
池。 本发明能够实现时间驱动和事件驱动的混合
推进机制, 仿真效率高。
权利要求书4页 说明书10页 附图1页
CN 114757057 B
2022.08.23
CN 114757057 B
1.一种基于混合推进的多线程并行作战仿真方法, 其特征在于, 所述多线程并行作战
仿真方法包括如下步骤:
步骤一、 创建一个引擎 服务主线程;
步骤二、 所述引擎 服务主线程获取作战方案中的实体数量;
步骤三、 所述引擎服务主线程根据仿真主机核心数和实体数量, 创建一个第一分线程
池;
步骤四、 所述第 一分线程池中各个第 一分线程并行执行加载各个实体信 息和仿真作战
任务, 并将所述各个实体的实体信息和仿真作战任务分别存 储于实体队列和事 件队列;
步骤五、 所述引擎 服务主线程销毁所述第一分线程池, 以释放所述各个第一分线程;
步骤六、 所述引擎服务主线程获取所述事件队列中各个仿真作战任务的作战时间, 以
获取时钟跳变时段集;
其中, 所述 时钟跳变时段集中各个时钟跳变时段为在对应的时钟跳变时段内没有仿真
作战任务;
步骤七、 所述引擎服务主线程根据所述仿真主机核心数和事件队列的大小, 创建一个
第二分线程池;
步骤八、 所述引擎服务主线程将所述事件队列中各个仿真作战任务分配给所述第 二分
线程池中各个第二分线程, 得到所述各个第二分线程的分事件队列; 步骤九、 所述引擎服务
主线程设置 仿真参数; 并根据所述仿真参数和时钟跳变时段集, 确定当前仿真时刻;
其中, 所述仿真参数包括仿真时刻和仿真步长;
步骤十、 所述各个第二分线程根据所述当前仿真时刻, 对所述各个第二分线程对应的
分事件队列中各个仿真作战任务并行执行仿真, 直至所述各个第二分线程执行完对应的分
事件队列中各个仿真作战任务 为止;
步骤十一、 所述引擎 服务主线程销毁所述第二分线程池, 以释放所述各个第二分线程。
2.根据权利要求1所述的多线程并行作战仿真方法, 其特征在于, 步骤三中, 所述第一
分线程池中的第一分线程数量 为:
Nthr1=min(Nent, 2Ncpu‑1);
其中, Nthr1为第一分线程数量; Nent为实体数量; Ncpu为仿真主机核心数。
3.根据权利要求2所述的多线程并行作战仿真方法, 其特征在于, 步骤七中, 所述第二
分线程池中的第二分线程池数量 为:
Nthr2=min(Neven, Ncpu‑1);
其中, Nthr2为第二分线程数量; Neven为事件队列中的事 件数量; Ncpu为仿真主机核心数。
4.根据权利要求1~3中任意一项所述的多线程并行作战仿真方法, 其特征在于, 所述
步骤十的具体实现过程包括:
步骤1001、 所述引擎 服务主线程设置历史事 件队列初始为空;
步骤1002、 所述引擎服务主线程判断所述当前仿真时刻是否处于所述时钟跳变时段集
内, 如是, 则获取所述当前仿 真时刻对应的时钟跳变时段, 进入步骤1003; 如否, 则所述各个
第二分线程并行从各自的分事件队列中逐个获取各自在所述当前仿真时刻对应的当前仿
真作战任务, 进入步骤10 04;
步骤1003、 所述引擎服务主线程将所述当前仿真时刻对应的时钟跳变时段的结束时间权 利 要 求 书 1/4 页
2
CN 114757057 B
2设置为当前仿真时刻, 返回步骤10 02;
步骤1004、 所述各个第二分线程判断所述当前仿真时刻是否小于所述当前仿真作战任
务的结束时刻, 如是, 则进入步骤1005; 如否, 则将所述当前仿真作战任务移动到所述历史
事件队列中, 进入步骤10 06;
步骤1005、 所述各个第二分线程依次并行调用仿真程序和并行执行仿真, 并将并行执
行仿真过程和结果缓存;
步骤1006、 所述各个第二分线程判断各自的分事件队列中所有仿真作战任务是否均已
执行仿真, 如是, 则挂起对应的所述第二分线程, 进入步骤1007; 如否, 则所述各个第二分线
程从各自的分事 件队列中读取 下一个仿真作战任务, 返回步骤10 05;
步骤1007、 所述引擎服务主线程判断所有第二分线程是否均为挂起状态, 如是, 则所述
引擎服务主线程根据预先设定的仿真步长, 计算下一步仿真时刻并赋给所述当前仿真时
刻, 返回步骤10 02; 如否, 则所述引擎 服务主线程等待。
5.根据权利要求4所述的多线程并行作战仿真方法, 其特征在于, 所述步骤1005还包
括:
当在并行执行仿真过程中出现提前完成的仿真作战任务 时, 则将所述仿真作战任务移
动到历史事 件队列中。
6.根据权利要求5所述的多线程并行作战仿真方法, 其特征在于, 所述步骤1005还包
括:
当在并行执行仿真作战任务时, 所述各个第二分线程判断是否产生新实体, 并在判断
为是时, 将所述 新实体补入到所述实体队列中;
所述各个第 二分线程判断所述新实体是否有需要执行的仿真作战任务, 并在判断为是
时, 将所述 新实体对应的仿真作战任务补入到对应的分事 件队列中;
所述各个第 二分线程获取所述新实体对应的仿真作战任务的作战时间, 以更新所述 时
钟跳变时段集。
7.一种基于混合推进的多线程并行作战仿真系统, 其特征在于, 所述多线程并行作战
仿真系统包括:
第一创建模块, 用于创建一个引擎 服务主线程;
第一获取模块, 用于所述引擎 服务主线程获取作战方案中的实体数量;
第二创建模块, 用于根据仿真主机核心数和实体数量, 创建一个第一分线程池;
并行执行加载模块, 用于第 一分线程池中各个第 一分线程并行执行加载各个实体信 息
和仿真作战任务, 并将所述各个实体的实体信息和仿真作战任务分别存储于实体队列和事
件队列;
第一销毁释放模块, 用于所述引擎服务主线程销毁所述第一分线程池, 以释放所述各
个第一分线程;
第二获取模块, 用于所述引擎服务主线程获取所述事件队列中各个仿真作战任务的作
战时间, 以获取时钟跳变时段集;
其中, 所述 时钟跳变时段集中各个时钟跳变时段为在对应的时钟跳变时段内没有仿真
作战任务;
第三创建模块, 用于所述引擎服务主线程根据所述仿真主机核心数和事件队列的大权 利 要 求 书 2/4 页
3
CN 114757057 B
3
专利 一种基于混合推进的多线程并行作战仿真方法和系统
文档预览
中文文档
16 页
50 下载
1000 浏览
0 评论
309 收藏
3.0分
温馨提示:本文档共16页,可预览 3 页,如浏览全部内容或当前文档出现乱码,可开通会员下载原始文档
本文档由 人生无常 于 2024-03-18 11:47:10上传分享