[发明专利]一种基于Linux的多线程硬实时控制方法有效
申请号: | 201310273174.0 | 申请日: | 2013-07-02 |
公开(公告)号: | CN103345422B | 公开(公告)日: | 2019-01-29 |
发明(设计)人: | 陈华云;郑振贵;刘伟峰;郑福弟 | 申请(专利权)人: | 厦门雅迅网络股份有限公司 |
主分类号: | G06F9/46 | 分类号: | G06F9/46 |
代理公司: | 泉州市诚得知识产权代理事务所(普通合伙) 35209 | 代理人: | 李伊飏 |
地址: | 361000 福建*** | 国省代码: | 福建;35 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 linux 多线程 实时 控制 方法 | ||
1.一种基于Linux的多线程硬实时控制方法,其特征在于:包括以下过程:
过程1:定义一个全局的互斥锁,并在主控线程中申请互斥锁;在被控线程中注册信号,并定义信号处理函数,该信号处理函数用以申请全局的互斥锁;
过程2:当主控线程要挂起被控线程时,向被控线程发送信号,被控线程接收到信号后,被阻塞挂起;
过程3:当主控线程要恢复被控线程时,释放掉互斥锁,则被控线程就可以获取到互斥锁,解除阻塞,被控线程恢复运行;
该方法具体包括以下步骤:
步骤1:定义全局的互斥锁,并初始化该互斥锁;
步骤2:创建一主控线程以及1个或多个被控线程;
步骤3:在主控线程中申请互斥锁,在被控线程中进行信号注册,并定义相应的接收信号类型和接收信号处理函数,不同的被控线程对应不同的接收信号类型,接收信号处理函数对不同的接收信号类型进行处理;
步骤4:对主控线程进行实时监控,检测其是否需要实时挂起1个或多个被控线程,如果是,则转至步骤5;如果否,则检测其是否需要恢复被控线程使其继续运行,如果是,则转到步骤6,如果否,则循环执行该步骤4;
步骤5:主控线程执行挂起被控线程的操作:主控线程向待被挂起的被控线程发送步骤3定义的信号;被控线程接收到该信号,执行相应的接收信号处理函数,将该被控线程挂起;返回步骤4;
步骤6:主控线程恢复被控线程,使其继续运行:主控线程释放之前申请到的互斥锁;则此时互斥锁处于可被申请状态,立即唤醒被控线程,被控线程成功申请到互斥锁,则继续运行;被控线程申请到互斥锁后立即释放掉,并继续运行,等待下一次的信号到来;
步骤7:主控线程再次申请互斥锁,并转到步骤4。
2.根据权利要求1所述的基于Linux的多线程硬实时控制方法,其特征在于:所述步骤1中,全局的互斥锁为1个或者多个。
3.根据权利要求1所述的基于Linux的多线程硬实时控制方法,其特征在于:如果被控线程为多个,则步骤3具体是:在主控线程中申请互斥锁,在被控线程中进行信号注册,并定义共同的接收信号类型和接收信号处理函数,不同的被控线程对应相同的接收信号类型,接收信号处理函数对该接收信号类型进行处理;
步骤5中,主控线程向待被挂起的被控线程发送步骤3定义的接收信号类型,具体是:主控线程向本进程发送步骤3定义的接收信号类型,以广播的形式通知该进程的各个线程。
4.根据权利要求3所述的基于Linux的多线程硬实时控制方法,其特征在于:步骤5中,主控线程向待被挂起的被控线程发送步骤3定义的接收信号类型,具体是:被控线程在同一个互斥锁上面叠加等待,主控线程按先后顺序向各个被控线程分别发送信号;当主控线程要恢复被控线程时,释放掉互斥锁,等待在互斥锁上面的各个被控线程按顺序相继唤醒。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于厦门雅迅网络股份有限公司,未经厦门雅迅网络股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201310273174.0/1.html,转载请声明来源钻瓜专利网。