[发明专利]一种单线程模拟多线程的方法在审
| 申请号: | 201710092411.1 | 申请日: | 2017-02-21 |
| 公开(公告)号: | CN106909461A | 公开(公告)日: | 2017-06-30 |
| 发明(设计)人: | 戴新华;耿明;卢晓飞;张元元;蔡荣 | 申请(专利权)人: | 杭州天宽科技有限公司 |
| 主分类号: | G06F9/50 | 分类号: | G06F9/50;G06F9/48 |
| 代理公司: | 杭州之江专利事务所(普通合伙)33216 | 代理人: | 张慧英 |
| 地址: | 310000 浙江省杭州市杭州经济技术*** | 国省代码: | 浙江;33 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 一种 线程 模拟 多线程 方法 | ||
技术领域
本发明涉及多任务多线程功能实现技术领域,尤其涉及一种单线程模拟多线程的方法。
背景技术
物联网采集控制系统早已渗透到诸如工业生产、智能家居、宇宙开发、海洋探测、环境保护、资源调查、医学诊断、生物工程、甚至文物保护等等极其之泛的领域。数据采集和终端控制器在整个系统中也占据举足轻重的位置。终端控制和采集系统是万物互联中和人与物交流的关键一环,它需要执行人的思想,和反馈物体的当前状态。终端设备往往数量众多分布也广泛,对于成本的要求也苛刻,所以终端控制和采集设备在执行单元上往往选择资源比较有限的单片机芯片,这也就和控制器需要执行的多重复杂的任务形成矛盾。在有的项目中,单片机系统可能需要处理比较复杂的逻辑和任务,由于资源限制,无法安装操作系统,程序逻辑往往过于臃肿复杂,且软件的实时性能大大降低。
发明内容
本发明为克服上述的不足之处,目的在于提供一种单线程模拟多线程的方法,本方法可以更好地利用MCU资源和性能,优化程序处理逻辑。
本发明是通过以下技术方案达到上述目的:一种单线程模拟多线程的方法,包括如下步骤:
(1)创建并初始化一个模拟线程池,用以存放模拟线程;
(2)创建注册若干模拟线程,并将新模拟线程登记到模拟线程池中;
(3)遍历模拟线程池中的所有模拟线程,判断各个模拟线程的执行标识thread.flag:若为true,则执行步骤(4),否则继续判断下一个模拟线程的执行标识;
(4)进行该模拟线程的运行策略判断,并按照判断得到的运行策略执行该模拟线程;
(5)执行完成后跳转回到步骤(3)直至判断完模拟线程池中的所有模拟线程。
作为优选,所述模拟线程池的大小根据MCU资源大小自定义。
作为优选,所述模拟线程登记到模拟线程池中需登记如下属性:
(i)pThread.con:线程执行模式;
(ii)pThread.cnt:线程执行次数;
(iii)pThread.freq:线程执行周期;
(iv)pThread.fun:回调函数;
(v)pThread.flag:可调用标识。
作为优选,所述步骤(4)模拟线程的运行策略如下所示:
(a)策略ONCEDELAY:即延时运行一次,等待延时时间到,并调用模拟线程回调函数一次,调用完后注销模拟线程;
(b)策略MANY:即执行多次,模拟线程按照设定的时间周期调用pThread->cnt次后,注销该模拟线程;pThread->cnt为注册模拟线程时设置;
(c)策略FOREVER:即永久执行,永久周期性调用模拟线程,直到主线程退出消亡;
(d)策略RESULT:即按执行结果执行,按照前一次调用结果判断是否执行下一次;若前一次调用返回错误,则注销模拟线程;否则继续调用。
作为优选,所述步骤(1)-步骤(5)执行过程中,时钟滴答定时器实时计算每个模拟线程的执行频率及延时控制,判断每个模拟线程计时是否到达预设的时间,若到达预设时间,则置该模拟线程的可调用标识pThread.flag为ture。
作为优选,所述在整个方法运行的任意步骤中,允许人为注册或注销模拟线程。
本发明的有益效果在于:本发明方法可以更好地利用MCU资源和性能,优化程序处理逻辑。
附图说明
图1是本发明方法的流程示意图。
具体实施方式
下面结合具体实施例对本发明进行进一步描述,但本发明的保护范围并不仅限于此:
实施例:如图1所示,一种单线程模拟多线程的方法具体包括如下步骤:
(1)创建并初始化一个模拟线程池,并用以存放模拟线程;线程初始化主要是初始化线程池中的模拟线程初始化值(不包含主线程,主线程非模拟线程),初始值为0。线程池能够容纳的最大模拟线程的数目一定,根据MCU内存资源进行确定。每注册一个新的线程,线程池会分配一个新空间给该线程,反之每注销一个线程,则从线程池中删除该线程资源。
(2)创建注册若干模拟线程,并进行线程登记,即把新创建的模拟线程登记到线程池中,模拟线程需要登记如下属性:
pThread.con:线程执行模式
pThread.cnt:线程执行次数
pThread.freq:线程执行周期
pThread.fun:回调函数
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于杭州天宽科技有限公司,未经杭州天宽科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201710092411.1/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种化学材料生产用干燥装置
- 下一篇:一种粉体烘干除铁一体机





