【技术实现步骤摘要】
一种基于Linux的多线程硬实时控制方法
本专利技术涉及多线程处理,尤其涉及基于Linux的多线程的硬实时控制方法。
技术介绍
现有的Linux系统开发中,基本都会用到多线程的开发技术。而且多线程中要进行相互的控制。当前的一般线程控制方法有:a、通过使用全局变量。A线程循环判断变量的当前值来切换状态,B线程中修改变量值来控制A线程。这样做资源浪费并且无法实时控制。b、使用条件变量。使用条件变量的线程可实现线程的唤醒,而无法在外部对线程进行实时的挂起,挂起只能线程本身运行到挂起点后才可以。因此只实现线程同步,而没有线程实时控制。上述现有的方法无法做到对线程的实时控制。另一方面,在编程中,为了保证共享数据操作的完整性,引入了对象互斥锁的概念。每个对象都对应于一个可称为"互斥锁"的标记,这个标记用来保证在任一时刻,只能有一个线程访问该对象。例如申请号为200310114380.3的专利技术专利,公开了一种用于串行互斥体的方法与装置,其将互斥锁与共享数据项相关联、并向多个执行线程提供互斥锁所有权的机制,这些线程按次序对共享数据项执行代码操作。该方法主要是使用互斥锁来保证共 ...
【技术保护点】
一种基于Linux的多线程硬实时控制方法,其特征在于:包括以下过程:过程1:定义一个全局的互斥锁,并在主线程中申请互斥锁;在被控线程中注册信号,并定义信号处理函数,该信号处理函数用以申请全局的互斥锁;过程2:当主线程要挂起被控线程时,向被控线程发送信号,被控线程接收到信号后,被阻塞挂起;过程3:当主线程要恢复被控线程时,释放掉互斥锁,则被控线程就可以获取到互斥锁,解除阻塞,被控线程恢复运行。
【技术特征摘要】
1.一种基于Linux的多线程硬实时控制方法,其特征在于:包括以下过程:过程1:定义一个全局的互斥锁,并在主控线程中申请互斥锁;在被控线程中注册信号,并定义信号处理函数,该信号处理函数用以申请全局的互斥锁;过程2:当主控线程要挂起被控线程时,向被控线程发送信号,被控线程接收到信号后,被阻塞挂起;过程3:当主控线程要恢复被控线程时,释放掉互斥锁,则被控线程就可以获取到互斥锁,解除阻塞,被控线程恢复运行;该方法具体包括以下步骤:步骤1:定义全局的互斥锁,并初始化该互斥锁;步骤2:创建一主控线程以及1个或多个被控线程;步骤3:在主控线程中申请互斥锁,在被控线程中进行信号注册,并定义相应的接收信号类型和接收信号处理函数,不同的被控线程对应不同的接收信号类型,接收信号处理函数对不同的接收信号类型进行处理;步骤4:对主控线程进行实时监控,检测其是否需要实时挂起1个或多个被控线程,如果是,则转至步骤5;如果否,则检测其是否需要恢复被控线程使其继续运行,如果是,则转到步骤6,如果否,则循环执行该步骤4;步骤5:主控线程执行挂起被控线程的操作:主控线程向待被挂起的被控线程发送步骤3定义的信号;被控线程接收到该信号,执行相应的接收信号处理函数,将该被控线程挂起;返回步骤4;步骤6:主控线程恢复被控线程,使其继续运...
【专利技术属性】
技术研发人员:陈华云,郑振贵,刘伟峰,郑福弟,
申请(专利权)人:厦门雅迅网络股份有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。