CN101030152A - 基于伪同步方式的操作控制方法及装置 - Google Patents

基于伪同步方式的操作控制方法及装置 Download PDF

Info

Publication number
CN101030152A
CN101030152A CN 200710086916 CN200710086916A CN101030152A CN 101030152 A CN101030152 A CN 101030152A CN 200710086916 CN200710086916 CN 200710086916 CN 200710086916 A CN200710086916 A CN 200710086916A CN 101030152 A CN101030152 A CN 101030152A
Authority
CN
China
Prior art keywords
thread
little
execution
main
little thread
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN 200710086916
Other languages
English (en)
Inventor
洪鼎杰
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN 200710086916 priority Critical patent/CN101030152A/zh
Publication of CN101030152A publication Critical patent/CN101030152A/zh
Pending legal-status Critical Current

Links

Images

Abstract

本发明公开了一种基于伪同步方式的操作控制方法,包括:启动一主微线程,然后该主微线程启动第一微线程执行第一操作,同时挂起所述主微线程;所述第一微线程执行完毕所述第一操作后,重新启动所述主微线程执行后续操作。本发明还公开了另一种基于伪同步方式的操作控制方法,包括:启动一主线程,然后该主线程启动第一线程执行第一操作,同时挂起所述主线程;所述第一线程执行完毕所述第一操作后,重新启动所述主线程执行后续操作。本发明还公开了基于伪同步方式的操作控制装置。本发明能够有效地提高操作执行效率,同时降低操作执行过程的复杂度,提高设计开发及维护的效率。

Description

基于伪同步方式的操作控制方法及装置
技术领域
本发明涉及通信或计算机领域中的操作控制技术,特别涉及一种基于伪同步方式的操作控制方法及装置。
背景技术
通信和计算机领域中,经常需要对数据、报文、指令等信息执行大量操作,对执行这些操作的控制方式包括同步方式和异步方式。
如图1所示,所谓同步方式是指当应用程序执行一个操作(即图1中的在先操作)时,一直等待该在先操作执行完毕并返回结果后,才继续执行后续操作。例如,如果应用程序以同步方式来处理客户机向服务器的数据删除操作,则客户机在向服务器发出数据删除操作的指令后,将一直等待服务器将查询结果返回客户机后,才继续进行下一步操作。
同步方式的优点是处理过程简单,可以简化程序结构的复杂性,能够提高应用程序的设计开发效率,并且易于维护。
但是同步方式的缺陷在于应用程序的执行效率低。例如在以同步方式来执行客户机向服务器的数据删除操作时,由于从数据表中删除所有的指定记录将是非常耗时的,因此在这种同步方式下,某次数据删除操作很可能延误其它后续的对时延性能要求比较高的重要操作的完成。再如,如果应用程序采用同步方式执行一项远程操作并等待返回结果,那么远程服务器失败或网络故障等无法预知的情况都可能使应用程序无限期地等待下去。
如图2所示,所谓异步方式则是指应用程序在启动一个在先操作后,不等待该在先操作的返回结果就继续执行后续操作,如果需要根据所述返回结果进行相应处理,则在后续操作中收到所述返回结果后再进行所述相应处理。
异步方式执行操作能够避免受单个操作的牵制,还可以实现多个操作并行执行,与同步方式相比,大大提高了灵活性及执行效率。
但异步方式也存在一些不足之处,例如增加了操作执行过程的复杂性,增加了程序结构的复杂性,降低了应用程序的设计开发和维护的效率。如果异步方式的具体应用环境比较复杂,则必须建立一套完整的机制,周期性地检查在先操作执行的状态,以决定下一步执行的操作。
现有技术中,为解决上述异步方式存在的问题,通常是采用通过有限状态机(简称FSM)来实现以伪同步方式执行操作。
伪同步方式是一种让操作执行过程像同步方式一样简单,但又不损失操作执行效率的方式。本质上,伪同步方式就是对异步方式的一种同步化的封装,以解决上述异步方式存在的处理过程复杂的问题,达到让操作执行过程既简单又高效的目的。
例如,如图3所示,使用有限状态机来实现伪同步方式,是预先将在先操作的过程划分为上沿过程和下沿过程,执行线程通过有限状态机来启动该在先操作的上沿过程,有限状态机在启动上沿过程后不需等待返回结果,立即执行后续操作。同时有限状态机不断轮询该上沿过程是否有结果返回,当有结果返回时,有限状态机将转调对应的所述下沿过程。
上述使用有限状态机来实现伪同步方式的方法存在以下不足之处:
1、处理效率仍有待提高。由于有限状态机内部需要不断轮询上沿过程的返回结果,当需要以伪同步方式执行的操作增多时,必然会增加轮询的时间,降低了有限状态机总体的操作执行效率和性能;
2、实现复杂度较高。伪同步过程的上沿过程与下沿过程,实际上是分离在不同的程序过程中,这与同步方式相比还是增加了程序结构的复杂度,降低了设计开发效率。
发明内容
本发明实施例的目的是为克服上述现有技术的缺陷,提供一种基于伪同步方式的操作控制方法及装置,能够有效地提高操作执行效率,同时降低操作执行过程的复杂度,提高设计开发及维护的效率。
为实现上述目的,本发明实施例提供了一种基于伪同步方式的操作控制方法,包括:启动一主微线程,然后该主微线程启动第一微线程执行第一操作,同时挂起所述主微线程;所述第一微线程执行完毕所述第一操作后,重新启动所述主微线程执行后续操作。
在上述技术方案中,在需要以伪同步方式执行第一操作时,通过启动一主微线程,然后该主微线程启动第一微线程来执行该第一操作,主微线程在启动该第一微线程的同时挂起本微线程,也即放弃本微线程对操作的控制权,由该第一微线程在执行完毕该第一操作后,将操作控制权交还给该主微线程,即重新启动该主微线程执行后续操作。
上述技术方案中,通过将主微线程切换到微线程来执行在先的第一操作,并引入启动微线程时挂起主微线程、以及微线程执行完毕第一操作后主动激活主微线程的机制,避免了现有的伪同步方式操作控制方法中不断轮询上沿过程是否执行完毕所导致的执行效率低且程序结构复杂的缺陷,大大提高了执行效率和性能,并降低了程序结构的复杂度,提高了设计开发及维护的效率。
此外,由于微线程在用户空间运行,不同于线程在系统内核空间运行,因此使用微线程执行操作能够大大提高启动、运行以及切换效率。
由于同一进程中同时并存的系统线程数量受系统内核资源限制而数量有限,而微线程因为只受系统内存资源的限制,在普通应用中常可达到几十万数量的级别,因此上述技术方案能够适用于存在大量并发的伪同步方式操作的应用场景,并能够大幅度地提高执行效率及处理性能。
为实现上述目的,本发明实施例还提供了一种基于伪同步方式的操作控制方法,包括:启动一主线程,然后该主线程启动第一线程执行第一操作,同时挂起所述主线程;所述第一线程执行完毕所述第一操作后,重新启动所述主线程执行后续操作。
在上述技术方案中,通过主线程启动第一线程来执行在先的第一操作,并引入启动第一线程时挂起主线程、以及第一线程执行完毕第一操作后主动激活主线程的机制,避免了现有的伪同步方式操作控制方法中不断轮询上沿过程是否执行完毕所导致的执行效率低且程序结构复杂的缺陷,大大提高了执行效率和性能,并降低了程序结构的复杂度,提高了设计开发及维护的效率。
上述技术方案中采用切换到线程而非微线程的方式来执行伪同步操作,在系统内核空间运行的线程与在用户空间运行的微线程相比并发数量和执行效率均有所降低,因此上述技术方案适用于对并发的伪同步操作数量和执行效率要求不高的应用场景。
相应地,为实现上述目的,本发明实施例还提供了一种基于伪同步方式的操作控制装置,包括:用于控制启动一主微线程并由该主微线程启动第一微线程执行第一操作、同时挂起所述主微线程的第一主控制模块;用于控制所述第一微线程执行完毕所述第一操作后重新启动所述主微线程执行后续操作的第一操作处理模块。
在上述技术方案中,通过第一主控制模块将主微线程切换到微线程来执行在先的第一操作,并引入启动微线程时挂起主微线程、以及微线程执行完毕第一操作后主动激活主微线程的机制,避免了现有的伪同步方式操作控制方法中不断轮询上沿过程是否执行完毕所导致的执行效率低且程序结构复杂的缺陷,大大提高了执行效率和性能,并降低了程序结构的复杂度,提高了设计开发及维护的效率。此外,由于微线程在用户空间运行,不同于线程在系统内核空间运行,因此使用微线程执行操作能够大大提高启动、运行以及切换效率。由于同一进程中同时并存的系统线程数量受系统内核资源限制而数量有限,而微线程因为只受系统内存资源的限制,在普通应用中常可达到几十万数量的级别,因此上述基于伪同步方式的操作控制装置能够适用于存在大量并发的伪同步方式操作的应用场景,并能够大幅度地提高执行效率及处理性能。
为实现上述目的,本发明实施例还提供了一种基于伪同步方式的操作控制装置,包括:用于控制启动一主线程并由该主线程启动第一线程执行第一操作、同时挂起所述主线程的第二主控制模块;用于控制所述第一线程执行完毕所述第一操作后重新启动所述主微线程执行后续操作的第二操作处理模块。
在上述技术方案中,通过第二主控制模块使主线程启动第一线程来执行在先的第一操作,并引入启动第一线程时挂起主线程、以及第一线程执行完毕第一操作后主动激活主线程的机制,避免了现有的伪同步方式操作控制方法中不断轮询上沿过程是否执行完毕所导致的执行效率低且程序结构复杂的缺陷,大大提高了执行效率和性能,并降低了程序结构的复杂度,提高了设计开发及维护的效率。
上述技术方案中采用切换到线程而非微线程的方式来执行伪同步操作,在系统内核空间运行的线程与在用户空间运行的微线程相比并发数量和执行效率均有所降低,因此上述技术方案适用于对并发的伪同步操作数量和执行效率要求不高的应用场景。
综上所述,本发明实施例通过主微线程或主线程启动微线程或线程来执行在先的第一操作,同时挂起主微线程或主线程,也即交出主微线程或主线程对操作的控制权,在微线程执行完毕第一操作后主动将操作的控制权交还给主微线程或主线程,从而无需现有的伪同步操作控制方法中不断轮询上沿过程是否执行完毕的操作,大大提高了操作执行效率,并且降低了程序结构的复杂度,提高了设计开发及维护的效率。
附图说明
图1为现有的同步方式操作控制方法的示意图;
图2为现有的异步方式操作控制方法的示意图;
图3为现有的伪同步方式操作控制方法的示意图;
图4为本发明实施例一的流程示意图;
图5为本发明实施例二的流程示意图;
图6为本发明实施例一的另一示意图;
图7为本发明实施例一的又一示意图;
图8为本发明实施例一的再一示意图。
具体实施方式
下面结合附图和实施例,对本发明实施例的技术方案做进一步的详细描述。
现有技术中,同步方式的操作控制复杂度低,但是执行效率也低;异步方式的操作控制执行效率高,但是复杂度也高;而使用有限状态机来实现的伪同步操作控制虽然在一定程度上平衡了复杂度与执行效率,但是由于需要有限状态机不断地轮询上沿过程是否执行完毕,从而仍然降低了操作执行效率,增加了程序结构的复杂度,降低了设计开发和维护的效率。
针对上述现有技术的缺陷,本发明实施例通过利用线程与微线程、或者线程与线程之间的切换技术,能够实现高执行效率和低复杂度的伪同步操作控制。换言之,通过引入主微线程或主线程启动微线程或线程来执行第一操作、同时挂起主微线程或主线程的机制来实现同步方式执行异步操作,也即伪同步操作,同时引入微线程切换或线程切换技术也实现了并发操作控制;通过引入微线程或线程执行完毕第一操作后,主动启动主微线程或主线程继续执行后续操作的机制,来实现无需轮询在先操作是否执行完毕即可自动继续执行后续操作,从而与现有的伪同步操作控制方法相比大大提高了执行效率,并降低了程序结构的复杂度,提高了设计开发与维护的效率。
具体而言,通过引入主微线程启动微线程来执行在先的第一操作,同时挂起主微线程,在微线程执行完毕第一操作后主动启动主微线程继续执行后续操作的机制,不仅能够实现高执行效率及简单的程序结构,而且能够充分利用微线程在用户空间执行从而并发数量大、执行效率高、启动和切换效率高的优点,从而能够适用于需要大量并发的伪同步操作且对执行效率要求高的应用场景。
而通过引入主线程启动第一线程来执行在先的第一操作、同时挂起主线程,在第一线程执行第一操作完毕后主动启动主线程执行后续操作的机制,能够实现高执行效率以及简单的程序结构。由于线程运行于内核空间,因此受内核空间的资源限制,并发的线程数量以及启动、执行和切换的效率均有所降低,因此相对于上述采用微线程的技术方案来说,适用于对伪同步操作的并发数量和执行效率要求较低的应用场景。
在上述构思中利用了线程及微线程技术。下面对此技术作简要介绍,以便更好地理解本发明实施例的技术方案。
进程和线程都是操作系统的概念。进程是应用程序的执行实例,每个进程是由私有的虚拟地址空间、代码、数据和其它各种系统资源组成,进程在运行过程中创建的资源随着进程的终止而被销毁,所使用的系统资源在进程终止时被释放或关闭。
线程是进程内部的一个执行单元。系统创建好进程后,实际上就启动执行了该进程的主微线程,主微线程以函数地址形式将程序的启动点提供给操作系统。主微线程终止了,进程也就随之终止。
每一个进程至少有一个主微线程,它无需由用户去主动创建,是由系统自动创建的。用户根据需要在应用程序中创建其它线程,多个线程并发地运行于同一个进程中。一个进程中的所有线程都在该进程的虚拟地址空间中,共同使用这些虚拟地址空间、全局变量和系统资源,所以线程间的通讯非常方便有效。
多线程可以实现并行处理,避免了某项任务长时间占用中央处理器(以下简称CPU)时间。要说明的一点是,目前大多数的计算机都是采用单个CPU的,为了运行所有这些线程,操作系统为每个独立线程安排一些CPU时间,操作系统以轮换方式向线程提供时间片,在宏观上长期看来好象这些线程都在同时运行,这就是多线程并行处理的实现方法。
微线程则是基本上只需要很少的系统资源就可以运行,并且是在用户空间运行的执行任务片断。由于微线程只受系统内存资源的限制,在普通应用中常可达到几十万数量的级别,甚至所谓的轻量级线程库中的线程也比微线程的资源消耗要高好几个数量级,通过合理的设计,可能在目前中等性能的PC机上运行数以万计的并行进程,还可以每秒钟百万次地在上下文之间切换。微线程同样可以实现多个微线程的并行处理。
通过上述简要介绍可知,通过线程切换或微线程切换来执行伪同步操作,一方面能够利用线程切换及微线程切换的高效方便的特点,实现高执行效率以及简单的程序结构,另一方面能够利用线程或微线程并行处理技术,来实现并发的伪同步操作处理。
本发明实施例提供了一种基于伪同步方式的操作控制方法,参见图4所示的实施例一的流程示意图,本实施例一包括:在步骤1中启动一主微线程,然后该主微线程启动第一微线程执行第一操作,同时挂起所述主微线程;然后在步骤2中所述第一微线程执行完毕所述第一操作后,重新启动所述主微线程执行后续操作。
在本实施例一中,使用微线程实现伪同步操作控制,与现有的使用FSM实现伪同步操作控制完全不同。本实施例一中通过主微线程启动运行在用户空间的微线程运行在先的第一操作,同时挂起主微线程并保存主微线程的运行状态,在第一操作执行完毕后,主动切换回主微线程调用现场,然后继续执行后续操作。整个执行过程非常类似同步执行,简化了程序结构,提高了执行效率,提高了设计开发及维护的效率,弥补了现有技术使用FSM实现伪同步操作控制的不足之处。
通过引入主微线程启动微线程来执行在先的第一操作,同时挂起主微线程,在微线程执行完毕第一操作后,主动启动主微线程继续执行后续操作的机制,不仅能够实现高执行效率及简单的程序结构,而且能够充分利用微线程在用户空间执行从而并发数量大、执行效率高、启动和切换效率高的优点,由于同一进程中同时并存的系统线程数量受系统内核资源限制而数量有限,而微线程因为只受系统内存资源的限制,在普通应用中常可达到几十万数量的级别,因此本实施例一能够适用于存在大量并发的伪同步方式操作的应用场景,并能够大幅度地提高执行效率及处理性能。也就是说,通过微线程切换来执行伪同步操作,一方面能够利用微线程切换的高效方便的特点,实现高执行效率以及简单的程序结构,另一方面能够利用微线程并行处理技术,来实现并发的伪同步操作处理。
图6为本实施例一的另一示意图,主微线程首先调用第一微线程执行第一操作,同时挂起该主微线程,将操作的控制权交给第一微线程,第一微线程执行完毕该第一操作后主动启动该主微线程,将操作控制权交还给该主微线程来执行后续操作。
为便于理解本实施例一的技术方案,下面通过程序示例来对本实施例一的技术方案作举例说明,并以一采用FSM进行伪同步操作控制的程序示例作为对比参考。
1、采用现有的使用FSM进行伪同步操作控制方法的程序示例:
/*将一段逻辑程序人为分解为上沿和下沿,这样可以在程序执行完上沿之后先退出,下沿程序在FSM中继续执行*/
/*上沿过程*/
void one()
{
    …
}
/*下沿过程*/
void two()
{
    …
}
/*注册上沿和下沿过程*/
/*MessageOne为one()完成后,FSM进入two()的状态信号*/
Fsm->register(two,MessageOne);
/*内部实现伪码*/
{
    …
    /*FsmFunction为指针函数数组,当FSM内部状态切换到MessageOne时,可找到对应的执行函数*/
    FsmFunction[MessageOne]=two;
    …
}
/*执行*/
Fsm->execute(one,MessageOne);
/*FSM内部执行伪码*/
/*Function:为要执行的上沿程序,这个为one
*Message为one执行后将切换FSM的内部状态到Message*/
virtual int FSM::execute(Function,Message)
{
    /*内部执行*/
    (*Function)();
}
/*FSM内部状态执行流*/
while(...)
{
    /*一段分支*/
    {
    /*上沿过程执行*/
    (*one)();
    /*上沿执行完毕,更改FSM的状态为MessageOne*/
    FsmStatus=MessageOne;
    }
    …
    /*执行FSM状态函数,执行下沿过程*/
    (*FsmFunction[MessageOne])();
}
2、采用本发明实施例一的技术方案的程序示例:
/*第一操作*/
void one()
{
}
/*后续操作*/
void two(void)
{
    …
}
void Function()
{
    one();
    /*本函数在此处挂起退出,直到主微线程把执行权主动交还给它*/
    MicroThread::yield();
    /*当本函数重新得到执行权时,继续从此处执行后续操作*/
    two();
}
/*执行*/
/*注册执行函数到主微线程中,返回Function的微线程句柄*/
ThreadIdOne=MicroThread::register(Function);
/*用得到的微线程句柄执行Function*/
MicroThread::run(ThreadIdOne);
由上述程序示例可知,使用微线程实现伪同步操作控制,能够大大简化程序结构,提高设计开发和维护的效率,同时也简化了操作步骤,大大提高了操作执行效率。
本实施例一中,主微线程在执行后续操作时,均可通过微线程来进行伪同步执行,也即所述主微线程执行后续操作可具体包括:主微线程通知第二微线程启动所述后续操作中包括的第二操作,同时挂起所述主微线程;所述第二微线程执行完毕所述第二操作后,向主微线程返回执行结果并启动所述主微线程;所述主微线程通知第三微线程启动执行所述后续操作中包括的第三操作,,同时挂起所述主微线程;以此类推,直至执行完毕所述后续操作。本领域的普通技术人员应当理解,可根据具体应用场景来灵活运用本实施例一提供的技术方案执行伪同步操作控制,可以如上所述全部操作均采用本发明实施例一所提供的技术方案来进行操作控制,也可以根据具体需要选取适当的操作按照本发明实施例一所提供的技术方案来进行操作控制,其均应在本发明技术方案所要求保护的范围之内。
例如,如图7所示,主微线程执行操作A和操作B之后,需要伪同步方式执行操作C,则主微线程调用第一微线程执行操作C,同时挂起该主微线程,将操作的控制权交给第一微线程,第一微线程执行完毕操作C后主动启动该主微线程,将操作控制权交还给该主微线程来执行后续操作。然后主微线程在执行操作D后,需要伪同步方式执行操作E,则启动第二微线程执行操作E,同时挂起该主微线程,将操作的控制权交给第二微线程,第二微线程执行完毕操作E后主动启动该主微线程,将操作控制权交还给该主微线程来执行后续操作。随后主微线程在执行操作F后,需要伪同步方式执行操作G,则启动第三微线程执行操作G,同时挂起该主微线程,将操作的控制权交给第三微线程,第三微线程执行完毕操作G后主动启动该主微线程,将操作控制权交还给该主微线程来执行后续操作。之后主微线程执行操作H后结束。
此外,本实施例一中,第一微线程在执行第一操作时,也可再通过多个微线程来依次执行该第一操作中包括的各个任务(以下简称分操作),也就是说,所述启动一主微线程,然后该主微线程启动第一微线程执行第一操作可具体包括:所述启动一主微线程,然后该主微线程启动第一微线程执行所述第一操作中包括的第一分操作,同时启动并挂起多个微线程,并挂起所述主微线程;所述第一微线程执行完毕第一分操作后,启动所述多个微线程中的第二微线程执行所述第一操作中包括的第二分操作;所述第二微线程执行完毕第二分操作后,启动所述多个微线程中的第三微线程执行所述第一操作中包括的第三分操作,以此类推,直至最后一个微线程执行完毕所述第一操作中包括的最后一个分操作。相应地,所述第一微线程执行完毕所述第一操作后,重新启动所述主微线程执行后续操作可具体包括:所述最后一个微线程执行完毕所述第一操作中包括的最后一个分操作后,重新启动所述主微线程执行后续操作。
例如,如图8所示,主微线程执行操作A和操作B之后,需要伪同步方式执行操作C,则启动第一微线程执行操作C所包括的分操作C1,同时启动并挂起第二微线程和第三微线程;第一微线程执行完毕分操作C1之后启动第二微线程执行操作C包括的分操作C2,第二微线程执行完毕分操作C2之后启动第三微线程执行操作C包括的分操作C3,第三微线程执行完毕分操作C3之后启动主微线程执行操作C后续的操作D。
本发明实施例还提供了一种基于伪同步方式的操作控制方法,参见图5所示的实施例二的流程示意图,本实施例二包括:在步骤10中,启动一主线程,然后该主线程启动第一线程执行第一操作,同时挂起所述主线程;在步骤20中,所述第一线程执行完毕所述第一操作后,重新启动所述主线程执行后续操作。
本实施例二通过主线程启动第一线程来执行在先的第一操作,并引入启动第一线程时挂起主线程、以及第一线程执行完毕第一操作后主动激活主线程的机制,避免了现有的伪同步方式操作控制方法中不断轮询上沿过程是否执行完毕所导致的执行效率低且程序结构复杂的缺陷,大大提高了执行效率和性能,并降低了程序结构的复杂度,提高了设计开发及维护的效率。换言之,通过线程切换来执行伪同步操作,一方面能够利用线程切换的高效方便的特点,实现高执行效率以及简单的程序结构,另一方面能够利用线程并行处理技术,来实现并发的伪同步操作处理。本实施例二采用切换到线程而非微线程的方式来执行伪同步操作,在系统内核空间运行的线程与在用户空间运行的微线程相比并发数量和执行效率均有所降低,因此相对于实施例一来说,适用于对并发的伪同步操作数量和执行效率要求不高的应用场景。
与实施例一相同,本实施例二中,主线程在执行后续操作时,均可通过启动线程来进行伪同步执行,也即所述主线程执行后续操作可具体包括:主线程通知第二线程启动所述后续操作中包括的第二操作,同时挂起所述主线程;所述第二线程执行完毕所述第二操作后,向主线程返回执行结果并启动所述主线程;所述主线程通知第三线程启动执行所述后续操作中包括的第三操作,同时挂起所述主线程;以此类推,直至执行完毕所述后续操作。本领域的普通技术人员应当理解,可根据具体应用场景来灵活运用本实施例二提供的技术方案执行伪同步操作控制,可以如上所述全部操作均采用本发明实施例二所提供的技术方案来进行操作控制,也可以根据具体需要选取适当的操作按照本发明实施例一所提供的技术方案来进行操作控制,其均应在本发明技术方案所要求保护的范围之内。
与实施例一相同,本实施例二中,第一线程在执行第一操作时,也可再通过多个线程来依次执行该第一操作中包括的各个任务(以下简称分操作),也就是说,所述主线程启动第一线程执行第一操作具体包括:所述主线程启动第一线程执行所述第一操作中包括的第一分操作,同时启动并挂起多个线程,并挂起所述主线程;所述第一线程执行完毕第一分操作后,启动所述多个线程中的第二线程执行所述第一操作中包括的第二分操作;所述第二线程执行完毕第二分操作后,启动所述多个线程中的第三线程执行所述第一操作中包括的第三分操作,以此类推,直至最后一个线程执行完毕所述第一操作中包括的最后一个分操作。所述第一线程执行完毕所述第一操作后,重新启动所述主线程执行后续操作可具体包括:所述最后一个线程执行完毕所述第一操作中包括的最后一个分操作后,重新启动所述主线程执行后续操作。
本发明实施例还提供了一种基于伪同步方式的操作控制装置,本发明实施例三包括:用于控制启动一主微线程并由该主微线程启动第一微线程执行第一操作、同时挂起所述主微线程的第一主控制模块;以及用于控制所述第一微线程执行完毕所述第一操作后重新启动所述主微线程执行后续操作的第一操作处理模块。
优选地,本实施例三还可包括多个操作处理模块,分别用于控制对应的微线程执行所述后续操作中包括的对应操作,并在执行完毕后重新启动所述主微线程。本实施例三还可包括多个操作处理模块,分别用于控制所述主微线程启动的多个微线程依次执行所述第一操作中包括的各个分操作,并在执行完毕所有分操作后重新启动所述主微线程。本领域的普通技术人员应当理解,可根据具体应用场景来灵活运用本实施例三提供的技术方案执行伪同步操作控制,可根据具体需要选取适当的操作按照本发明实施例三所提供的技术方案来进行操作控制,其均应在本发明技术方案所要求保护的范围之内。
在本实施例三中,通过第一主控制模块将主微线程切换到微线程来执行在先的第一操作,并引入启动微线程时挂起主微线程、以及微线程执行完毕第一操作后主动激活主微线程的机制,避免了现有的伪同步方式操作控制方法中不断轮询上沿过程是否执行完毕所导致的执行效率低且程序结构复杂的缺陷,大大提高了执行效率和性能,并降低了程序结构的复杂度,提高了设计开发及维护的效率。此外,由于微线程在用户空间运行,不同于线程在系统内核空间运行,因此使用微线程执行操作能够大大提高启动、运行以及切换效率。由于同一进程中同时并存的系统线程数量受系统内核资源限制而数量有限,而微线程因为只受系统内存资源的限制,在普通应用中常可达到几十万数量的级别,因此上述基于伪同步方式的操作控制装置能够适用于存在大量并发的伪同步方式操作的应用场景,并能够大幅度地提高执行效率及处理性能。
本发明实施例还提供了一种基于伪同步方式的操作控制装置,本发明实施例四包括:用于控制启动一主线程并由该主线程启动第一线程执行第一操作、同时挂起所述主线程的第二主控制模块;以及用于控制所述第一线程执行完毕所述第一操作后重新启动所述主线程执行后续操作的第二操作处理模块。
优选地,本实施例四还可包括多个操作处理模块,分别用于控制对应的线程执行所述后续操作中包括的对应操作,并在执行完毕后重新启动所述主线程。本实施例四还可包括多个操作处理模块,分别用于控制所述主线程启动的多个线程依次执行所述第一操作中包括的各个分操作,并在执行完毕所有分操作后重新启动所述主线程。本领域的普通技术人员应当理解,可根据具体应用场景来灵活运用本实施例四提供的技术方案执行伪同步操作控制,可根据具体需要选取适当的操作按照本发明实施例四所提供的技术方案来进行操作控制,其均应在本发明技术方案所要求保护的范围之内。
本实施例四中,通过第二主控制模块使主线程启动第一线程来执行在先的第一操作,并引入启动第一线程时挂起主线程、以及第一线程执行完毕第一操作后主动激活主线程的机制,避免了现有的伪同步方式操作控制方法中不断轮询上沿过程是否执行完毕所导致的执行效率低且程序结构复杂的缺陷,大大提高了执行效率和性能,并降低了程序结构的复杂度,提高了设计开发及维护的效率。
以上实施例仅用以说明本发明的技术方案,而非对本发明作限制性理解。尽管参照上述较佳实施例对本发明进行了详细说明,本领域的普通技术人员应当理解:其依然可以对本发明的技术方案进行修改或者等同替换,而这种修改或者等同替换并不脱离本发明技术方案的精神和范围。

Claims (12)

1、一种基于伪同步方式的操作控制方法,其特征在于,包括:
启动一主微线程,然后该主微线程启动第一微线程执行第一操作,同时挂起所述主微线程;
所述第一微线程执行完毕所述第一操作后,重新启动所述主微线程执行后续操作。
2、根据权利要求1所述的方法,其特征在于,所述主微线程执行后续操作具体包括:主微线程通知第二微线程启动所述后续操作中包括的第二操作,同时挂起所述主微线程;所述第二微线程执行完毕所述第二操作后,向主微线程返回执行结果并启动所述主微线程;所述主微线程通知第三微线程启动执行所述后续操作中包括的第三操作,同时挂起所述主微线程;以此类推,直至执行完毕所述后续操作。
3、根据权利要求1所述的方法,其特征在于:
所述主微线程启动第一微线程执行第一操作具体包括:所述主微线程启动第一微线程执行所述第一操作中包括的第一分操作,同时启动并挂起多个微线程,并挂起所述主微线程;所述第一微线程执行完毕第一分操作后,启动所述多个微线程中的第二微线程执行所述第一操作中包括的第二分操作;所述第二微线程执行完毕第二分操作后,启动所述多个微线程中的第三微线程执行所述第一操作中包括的第三分操作,以此类推,直至最后一个微线程执行完毕所述第一操作中包括的最后一个分操作;
所述第一微线程执行完毕所述第一操作后,重新启动所述主微线程执行后续操作具体包括:所述最后一个微线程执行完毕所述第一操作中包括的最后一个分操作后,重新启动所述主微线程执行后续操作。
4、一种基于伪同步方式的操作控制方法,其特征在于,包括:
启动一主线程,然后该主线程启动第一线程执行第一操作,同时挂起所述主线程;
所述第一线程执行完毕所述第一操作后,重新启动所述主线程执行后续操作。
5、根据权利要求4所述的方法,其特征在于,所述主线程执行后续操作具体包括:主线程通知第二线程启动所述后续操作中包括的第二操作,同时挂起所述主线程;所述第二线程执行完毕所述第二操作后,向主线程返回执行结果并启动所述主线程;所述主线程通知第三线程启动执行所述后续操作中包括的第三操作,同时挂起所述主线程;以此类推,直至执行完毕所述后续操作。
6、根据权利要求5所述的方法,其特征在于:
所述主线程启动第一线程执行第一操作具体包括:所述主线程启动第一线程执行所述第一操作中包括的第一分操作,同时启动并挂起多个线程,并挂起所述主线程;所述第一线程执行完毕第一分操作后,启动所述多个线程中的第二线程执行所述第一操作中包括的第二分操作;所述第二线程执行完毕第二分操作后,启动所述多个线程中的第三线程执行所述第一操作中包括的第三分操作,以此类推,直至最后一个线程执行完毕所述第一操作中包括的最后一个分操作;
所述第一线程执行完毕所述第一操作后,重新启动所述主线程执行后续操作具体包括:所述最后一个线程执行完毕所述第一操作中包括的最后一个分操作后,重新启动所述主线程执行后续操作。
7、一种基于伪同步方式的操作控制装置,其特征在于,包括:
用于控制启动一主微线程并由该主微线程启动第一微线程执行第一操作、同时挂起所述主微线程的第一主控制模块;
用于控制所述第一微线程执行完毕所述第一操作后重新启动所述主微线程执行后续操作的第一操作处理模块。
8、根据权利要求7所述的装置,其特征在于:还包括多个操作处理模块,分别用于控制对应的微线程执行所述后续操作中包括的对应操作,并在执行完毕后重新启动所述主微线程。
9、根据权利要求7所述的装置,其特征在于:还包括多个操作处理模块,分别用于控制所述主微线程启动的多个微线程依次执行所述第一操作中包括的各个分操作,并在执行完毕所有分操作后重新启动所述主微线程。
10、一种基于伪同步方式的操作控制装置,其特征在于,包括:
用于控制启动一主线程并由该主线程启动第一线程执行第一操作、同时挂起所述主线程的第二主控制模块;
用于控制所述第一线程执行完毕所述第一操作后重新启动所述主线程执行后续操作的第二操作处理模块。
11、根据权利要求10所述的装置,其特征在于:还包括多个操作处理模块,分别用于控制对应的线程执行所述后续操作中包括的对应操作,并在执行完毕后重新启动所述主线程。
12、根据权利要求10所述的装置,其特征在于还包括多个操作处理模块,分别用于控制所述主线程启动的多个线程依次执行所述第一操作中包括的各个分操作,并在执行完毕所有分操作后重新启动所述主线程。
CN 200710086916 2007-03-20 2007-03-20 基于伪同步方式的操作控制方法及装置 Pending CN101030152A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN 200710086916 CN101030152A (zh) 2007-03-20 2007-03-20 基于伪同步方式的操作控制方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN 200710086916 CN101030152A (zh) 2007-03-20 2007-03-20 基于伪同步方式的操作控制方法及装置

Publications (1)

Publication Number Publication Date
CN101030152A true CN101030152A (zh) 2007-09-05

Family

ID=38715521

Family Applications (1)

Application Number Title Priority Date Filing Date
CN 200710086916 Pending CN101030152A (zh) 2007-03-20 2007-03-20 基于伪同步方式的操作控制方法及装置

Country Status (1)

Country Link
CN (1) CN101030152A (zh)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103488690A (zh) * 2013-09-02 2014-01-01 用友软件股份有限公司 数据集成系统和数据集成方法
CN103809936A (zh) * 2012-11-05 2014-05-21 辉达公司 编译或运行时执行分叉-合并数据并行程序的系统和方法
CN103824075A (zh) * 2014-02-18 2014-05-28 深圳天源迪科信息技术股份有限公司 图像识别系统及方法
CN104461730A (zh) * 2013-09-22 2015-03-25 华为技术有限公司 一种虚拟资源分配方法及装置
CN106254937A (zh) * 2016-08-09 2016-12-21 深圳Tcl数字技术有限公司 电视机及其信号源的切换方法
CN112988365A (zh) * 2021-05-21 2021-06-18 北京国科环宇科技股份有限公司 一种线程管理方法、装置、设备及介质

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103809936A (zh) * 2012-11-05 2014-05-21 辉达公司 编译或运行时执行分叉-合并数据并行程序的系统和方法
CN103488690A (zh) * 2013-09-02 2014-01-01 用友软件股份有限公司 数据集成系统和数据集成方法
CN103488690B (zh) * 2013-09-02 2017-06-30 用友网络科技股份有限公司 数据集成系统和数据集成方法
CN104461730A (zh) * 2013-09-22 2015-03-25 华为技术有限公司 一种虚拟资源分配方法及装置
WO2015039582A1 (zh) * 2013-09-22 2015-03-26 华为技术有限公司 一种虚拟资源分配方法及装置
CN104461730B (zh) * 2013-09-22 2017-11-07 华为技术有限公司 一种虚拟资源分配方法及装置
CN103824075A (zh) * 2014-02-18 2014-05-28 深圳天源迪科信息技术股份有限公司 图像识别系统及方法
CN106254937A (zh) * 2016-08-09 2016-12-21 深圳Tcl数字技术有限公司 电视机及其信号源的切换方法
WO2018028124A1 (zh) * 2016-08-09 2018-02-15 深圳Tcl数字技术有限公司 电视机及其信号源的切换方法
CN106254937B (zh) * 2016-08-09 2019-12-03 深圳Tcl数字技术有限公司 电视机及其信号源的切换方法
CN112988365A (zh) * 2021-05-21 2021-06-18 北京国科环宇科技股份有限公司 一种线程管理方法、装置、设备及介质

Similar Documents

Publication Publication Date Title
CN101030152A (zh) 基于伪同步方式的操作控制方法及装置
CN102541653B (zh) 一种多任务线程池调度方法和系统
CN1154928C (zh) 用于多任务设施信息处理系统的资源管理方法和设备
CN100337235C (zh) 访问数据库的方法及装置
CN1256668C (zh) 运用Linux完成操作系统自动安装的方法
CN1250906A (zh) 使用组合的数据处理器系统和指令系统
CN1908903A (zh) 执行作业步的系统和方法以及计算机产品
CN101526948B (zh) 多线程文件遍历技术
CN1825286A (zh) 嵌入式sram操作系统线程实现和线程状态转换的方法
CN1752934A (zh) 编译器、编译方法以及编译程序
CN1851655A (zh) 通过由测试集组成的测试环境来实现产品自动测试的方法
CN1967485A (zh) 一种实现j2ee应用的方法及系统
CN1975668A (zh) 一种支持多语言的系统及输入、读取多语言数据的方法
CN1101573C (zh) 计算机系统
CN1642105A (zh) 一种在网络系统中实现任务管理的方法
CN110557682B (zh) 基于双核启动的智能电视快速开机方法及双核智能电视
CN1855068A (zh) 测试多线程软件并发冲突的方法
CN1666174A (zh) 处理器的地址生成单元
JP2010009395A (ja) 情報処理装置、粒度調整方法およびプログラム
CN1852156A (zh) 不中断业务对处理系统的程序版本进行升级的方法
CN1687901A (zh) 基于中断的实时任务调度方法
US20130117757A1 (en) Method and apparatus for scheduling application programs
CN1529858A (zh) 计算系统
CN1627285A (zh) 互连并行计算机的处理器以有利于环状分区的方法和系统
CN1770108A (zh) 软件在线升级的方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C12 Rejection of a patent application after its publication
RJ01 Rejection of invention patent application after publication

Open date: 20070905