《一种多线程管理方法及架构.pdf》由会员分享,可在线阅读,更多相关《一种多线程管理方法及架构.pdf(18页珍藏版)》请在专利查询网上搜索。
1、(10)申请公布号 CN 103136047 A (43)申请公布日 2013.06.05 CN 103136047 A *CN103136047A* (21)申请号 201110391566.8 (22)申请日 2011.11.30 G06F 9/48(2006.01) (71)申请人 大唐联诚信息系统技术有限公司 地址 100191 北京市海淀区学院路 40 号 (72)发明人 韩正超 王海涛 范大庆 (74)专利代理机构 北京集佳知识产权代理有限 公司 11227 代理人 逯长明 (54) 发明名称 一种多线程管理方法及架构 (57) 摘要 本发明公开了一种多线程管理方法及架构。 该方法。
2、适用于由操作系统控制多个线程的架构 中, 其中, 多个线程包括调度线程和处理线程 ; 该 方法包括 : 当前被执行的调度线程获得当前被执 行纤程所发送的调度消息, 该调度消息携带有目 的标识 ; 判断该目的标识是否为自身内部纤程的 标识, 如果是, 则根据该调度消息, 从当前被执行 纤程切换到具有目的标识的纤程, 以实现线程内 部纤程的切换 ; 否则, 将该调度消息发送至该目 的标识对应的线程, 并且在当前被执行纤程执行 完毕后, 释放相应 CPU 资源, 并保存自身的堆栈信 息, 以此实现线程间的切换。通过利用本方案, 操 作系统所控制的多个线程之间的切换次数减少, 切换开销大大降低。 (5。
3、1)Int.Cl. 权利要求书 2 页 说明书 11 页 附图 4 页 (19)中华人民共和国国家知识产权局 (12)发明专利申请 权利要求书2页 说明书11页 附图4页 (10)申请公布号 CN 103136047 A CN 103136047 A *CN103136047A* 1/2 页 2 1. 一种多线程管理方法, 其特征在于, 适用于由操作系统控制多个线程的架构中, 其 中, 多个线程包括调度线程和处理线程, 所述调度线程控制多个纤程实现相应多个处理线 程的功能, 且所述多个纤程共享其对应调度线程的堆栈资源 ; 所述方法包括 : 当前被执行的调度线程获得当前被执行纤程所发送的调度消息。
4、, 所述调度消息携带有 目的标识 ; 判断所述目的标识是否为自身内部纤程的标识, 如果是, 则根据所述调度消息, 从当前 被执行纤程切换到具有目的标识的纤程, 以实现线程内部纤程的切换 ; 否则, 将所述调度消息发送至所述目的标识对应的线程, 并且在当前被执行纤程执行 完毕后, 释放相应 CPU 资源, 并保存自身的堆栈信息, 以此实现线程间的切换。 2. 根据权利要求 1 所述的方法, 其特征在于, 所述则根据所述调度消息, 从当前被执行 纤程切换到具有目的标识的纤程, 具体为 : 将所述调度消息保存在其对应的存储邮箱中 ; 在当前被执行纤程执行完毕后, 解析所述存储邮箱中的调度消息, 并根。
5、据解析结果, 调 度并执行所述目的标识对应的纤程。 3. 根据权利要求 1 所述的方法, 其特征在于, 当所述目标标识对应的线程为处理线程 时, 所述目的标识对应的线程对所述调度消息的处理过程包括 : 接收所述调度消息 ; 在所述当前被执行的调度线程的当前被执行纤程执行完毕, 并释放相应 CPU 资源后, 从操作系统获得相应 CPU 资源 ; 解析所述调度消息, 并根据解析结果, 由操作系统调度并执行。 4. 根据权利要求 1 所述的方法, 其特征在于, 当所述目的标识对应的线程为调度线程 时, 所述目的标识对应的线程对所述调度消息的处理过程包括 : 接收所述调度消息 ; 将所述调度消息放置到。
6、所述目的标识对应纤程的存储邮箱中, 并将所述目的标识对应 的纤程放置到自身的调度队列中 ; 在当前被执行的调度线程的当前被执行纤程执行完毕, 并释放相应 CPU 资源后, 从操 作系统获得相应的 CPU 资源 ; 查询自身的调度队列, 获得所述目的标识对应纤程, 并查询所述目的标识对应纤程的 存储邮箱, 解析所述调度消息, 并根据解析结果, 调度并执行所述目的标识对应纤程。 5. 根据权利要求 1 所述的方法, 其特征在于, 所述调度消息携带有消息优先级 ; 相应的, 当调度线程的存储邮箱或纤程的存储邮箱中存在多个调度消息时, 按照优先 级从高到低的顺序处理所述调度消息。 6. 一种多线程管理。
7、架构, 其特征在于, 包括 : 操作系统、 调度线程以及处理线程 ; 所述调度线程控制多个纤程实现相应多个处理线程的功能, 且所述多个纤程共享其对 应调度线程的堆栈资源 ; 其中, 适用于所述多线程管理架构的多线程管理方法包括 : 当前被执行的调度线程获得当前被执行纤程所发送的调度消息, 所述调度消息携带有 目的标识 ; 权 利 要 求 书 CN 103136047 A 2 2/2 页 3 判断所述目的标识是否为自身内部纤程的标识, 如果是, 则根据所述调度消息, 从当前 被执行纤程切换到具有目的标识的纤程, 以实现线程内部纤程的切换 ; 否则, 将所述调度消息发送至所述目的标识对应的线程, 。
8、并且在当前被执行纤程执行 完毕后, 释放相应 CPU 资源, 并保存自身的堆栈信息, 以此实现线程间的切换。 权 利 要 求 书 CN 103136047 A 3 1/11 页 4 一种多线程管理方法及架构 技术领域 0001 本发明涉及技术领域, 特别是涉及一种多线程管理方法及架构。 背景技术 0002 线程, 也被称为轻量级进程, 是程序执行流的最小单元 ; 一个标准的线程由线程 ID, 当前指令指针、 寄存器集合和堆栈组成。 另外, 线程是进程中的一个实体, 是被系统独立 调度和分配的基本单元, 线程自己不拥有系统资源, 只拥有一点自己在运行过程中必不可 少的资源, 但它可与同属一个进程。
9、的其他线程共享进程所拥有的全部资源。一个线程可以 创建和撤销另一个线程, 同一个进程中的多个线程之间可以并发执行。由于线程之间的相 互制约, 致使线程在运行过程中呈现出间断性。线程也有就绪、 阻塞和运行三种基本状态。 每一个程序都至少有一个线程, 那就是程序本身。 线程是程序中一个单一的顺序控制流程, 在单个程序中同时运行多个线程完成不同的工作, 称为多线程。 0003 在嵌入式系统中, 线程间可以互相切换。比如, 某此线程间切换过程如图 1 所示。 在整个过程中, 各线程的时间分配如图 2 所示。其中, 时间轴上各时间点的说明为 : 0004 (1)0 T1 为空闲 ; 0005 (2)T1。
10、 T2 为线程 1 处理需要的时间 ; 0006 (3)T2 T3 为线程 1 切换到线程 2 需要的时间 ; 0007 (4)T3 T4 为线程 2 处理需要的时间 ; 0008 (5)T4 T5 为线程 2 切换到线程 3 需要的时间 ; 0009 (6)T5 T6 为线程 3 处理所需的时间。 0010 由图 2 可知, 处理整个流程所需的时间总开销为 (T6-T1)。其中, 线程的处理时间 开销为 (T2-T1)+(T4-T3)+(T6-T5) ; 线程间切换次数为 2 次, 切换产生的调度时间开销为 (T3-T2)+(T5-T4)。 由于线程有自己的堆栈, 线程间切换时, 需要保存程。
11、序计数器、 上下文指 针、 运行状态、 寄存器组等信息, 使得线程间切换的时间开销比较大。而随着线程数量的增 加, 线程间切换时调度算法的时间复杂度和空间复杂度会相应的增加, 同时线程间切换的 次数也会增加, 这样使得总时间开销与线程数量会呈现出近似平方的关系。 因此, 当线程个 数达到一定数量时, 线程切换带来的时间开销是不可忽略的, 甚至会严重影响系统的性能。 0011 为了避免线程间切换带来的时间开销过大, 现有的解决办法是减少线程数量, 减 少线程间单次调度的时间开销以及线程间切换的次数。但是, 线程数量的减少意味着每个 线程需要处理的功能增加, 从而造成单个线程功能庞大, 结构复杂,。
12、 对于前期开发以及后期 维护都带来极大不便 ; 而且软件架构不易改变, 不利于功能扩展和软件升级。 0012 因此, 如何降低多个线程的切换带来的时间开销, 从而降低整个线程处理过程的 总开销是一个值得关注的问题。 发明内容 0013 为解决上述技术问题, 本发明实施例提供了一种多线程管理方法及架构, 以降低 说 明 书 CN 103136047 A 4 2/11 页 5 多线程的切换时间开销, 技术方案如下 : 0014 一种多线程管理方法, 适用于由操作系统控制多个线程的架构中, 其中, 多个线程 包括调度线程和处理线程, 所述调度线程控制多个纤程实现相应多个处理线程的功能, 且 所述多个。
13、纤程共享其对应调度线程的堆栈资源 ; 所述方法包括 : 0015 当前被执行的调度线程获得当前被执行纤程所发送的调度消息, 所述调度消息携 带有目的标识 ; 0016 判断所述目的标识是否为自身内部纤程的标识, 如果是, 则根据所述调度消息, 从 当前被执行纤程切换到具有目的标识的纤程, 以实现线程内部纤程的切换 ; 0017 否则, 将所述调度消息发送至所述目的标识对应的线程, 并且在当前被执行纤程 执行完毕后, 释放相应 CPU 资源, 并保存自身的堆栈信息, 以此实现线程间的切换。 0018 其中, 所述则根据所述调度消息, 从当前被执行纤程切换到具有目的标识的纤程, 具体为 : 001。
14、9 将所述调度消息保存在其对应的存储邮箱中 ; 0020 在当前被执行纤程执行完毕后, 解析所述存储邮箱中的调度消息, 并根据解析结 果, 调度并执行所述目的标识对应的纤程。 0021 其中, 当所述目标标识对应的线程为处理线程时, 所述目的标识对应的线程对所 述调度消息的处理过程包括 : 0022 接收所述调度消息 ; 0023 在所述当前被执行的调度线程的当前被执行纤程执行完毕, 并释放相应 CPU 资源 后, 从操作系统获得相应 CPU 资源 ; 0024 解析所述调度消息, 并根据解析结果, 由操作系统调度并执行。 0025 其中, 当所述目的标识对应的线程为调度线程时, 所述目的标识。
15、对应的线程对所 述调度消息的处理过程包括 : 0026 接收所述调度消息 ; 0027 将所述调度消息放置到所述目的标识对应纤程的存储邮箱中, 并将所述目的标识 对应的纤程放置到自身的调度队列中 ; 0028 在当前被执行的调度线程的当前被执行纤程执行完毕, 并释放相应 CPU 资源后, 从操作系统获得相应的 CPU 资源 ; 0029 查询自身的调度队列, 获得所述目的标识对应纤程, 并查询所述目的标识对应纤 程的存储邮箱, 解析所述调度消息, 并根据解析结果, 调度并执行所述目的标识对应纤程。 0030 其中, 所述调度消息携带有消息优先级 ; 0031 相应的, 当调度线程的存储邮箱或纤。
16、程的存储邮箱中存在多个调度消息时, 按照 优先级从高到低的顺序处理所述调度消息。 0032 相应的, 本发明实施例还提供一种多线程管理架构, 包括 : 0033 操作系统、 调度线程以及处理线程 ; 0034 所述调度线程控制多个纤程实现相应多个处理线程的功能, 且所述多个纤程共享 其对应调度线程的堆栈资源 ; 0035 其中, 适用于所述多线程管理架构的多线程管理方法包括 : 0036 当前被执行的调度线程获得当前被执行纤程所发送的调度消息, 所述调度消息携 说 明 书 CN 103136047 A 5 3/11 页 6 带有目的标识 ; 0037 判断所述目的标识是否为自身内部纤程的标识,。
17、 如果是, 则根据所述调度消息, 从 当前被执行纤程切换到具有目的标识的纤程, 以实现线程内部纤程的切换 ; 0038 否则, 将所述调度消息发送至所述目的标识对应的线程, 并且在当前被执行纤程 执行完毕后, 释放相应 CPU 资源, 并保存自身的堆栈信息, 以此实现线程间的切换。 0039 本发明实施例所提供的技术方案, 通过设置控制多个纤程实现多个处理处理的功 能的调度线程, 使得特定处理线程之间的切换转换为所述特定处理线程对应调度线程内部 的纤程之间的切换。由于纤程受调度线程控制, 且多个纤程共享其对应调度线程的堆栈资 源, 使得纤程之间的切换时间开销大大降低。 通过利用本方案, 操作系。
18、统所控制的多个线程 之间的切换次数减少, 切换开销大大降低。 附图说明 0040 为了更清楚地说明本发明实施例或现有技术中的技术方案, 下面将对实施例或现 有技术描述中所需要使用的附图作简单的介绍, 显而易见地, 下面描述中的附图仅仅是本 发明的一些实施例, 对于本领域普通技术人员来讲, 在不付出创造性劳动性的前提下, 还可 以根据这些附图获得其他的附图。 0041 图 1 为现有技术中的线程关系图 ; 0042 图 2 为现有技术中多线程切换示意图 ; 0043 图 3 为本发明实施例提供的一种多线程管理方法的第一种流程图 ; 0044 图 4 为本发明实施例提供的一种多线程管理方法的第二种。
19、流程图 ; 0045 图 5 为本发明实施例提供的一种多线程管理方法的第三种流程图 ; 0046 图 6 为本发明实施例提供的一种多线程管理方法中调度线程内部纤程的切换示 意图 ; 0047 图 7 为本发明实施例提供的一种多线程管理方法中调度线程之间纤程的切换示 意图 ; 0048 图 8 为本发明实施例提供的一种多线程管理方法中普通线程与调度线程的纤程 的切换示意图 ; 0049 图 9 为本发明实施例所提供的一种多线程管理架构的结构示意图。 具体实施方式 0050 为了降低多个线程的切换所带来的时间开销, 从而降低整个线程处理过程的总开 销, 本发明实施例提供了一种多线程管理方法及架构。。
20、 0051 下面首先对本发明实施例所提供的一种多线程管理方法进行介绍。 0052 一种多线程管理方法, 其适用于由操作系统控制多个线程的架构中, 其中, 多个线 程包括调度线程和处理线程, 所述调度线程控制多个纤程实现相应多个处理线程的功能, 且所述多个纤程共享其对应调度线程的堆栈资源 ; 所述方法包括 : 0053 当前被执行的调度线程获得当前被执行纤程所发送的调度消息, 所述调度消息携 带有目的标识 ; 0054 判断所述目的标识是否为自身内部纤程的标识, 如果是, 则根据所述调度消息, 从 说 明 书 CN 103136047 A 6 4/11 页 7 当前被执行纤程切换到具有目的标识的。
21、纤程, 以实现线程内部纤程的切换 ; 0055 否则, 将所述调度消息发送至所述目的标识对应的线程, 并且在当前被执行纤程 执行完毕后, 释放相应 CPU 资源, 并保存自身的堆栈信息, 以此实现线程间的切换。 0056 本发明实施例所提供的技术方案, 通过设置控制多个纤程实现多个处理处理的功 能的调度线程, 使得特定处理线程之间的切换转换为所述特定处理线程对应调度线程内部 的纤程之间的切换。由于纤程受调度线程控制, 且多个纤程共享其对应调度线程的堆栈资 源, 使得纤程之间的切换时间开销大大降低。 通过利用本方案, 操作系统所控制的多个线程 之间的切换次数减少, 切换开销大大降低。 0057 。
22、下面将结合本发明实施例中的附图, 对本发明实施例中的技术方案进行清楚、 完 整地描述, 显然, 所描述的实施例仅是本发明一部分实施例, 而不是全部的实施例。基于本 发明中的实施例, 本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实 施例, 都属于本发明保护的范围。 0058 本发明实施例所提供的方案适用于由操作系统控制多个线程的架构中。其中, 该 多个线程包括 : 调度线程和处理线程。 调度线程与处理线程具有相应的堆栈资源, 在处理线 程与调度线程之间、 处理线程之间、 调度线程之间进行切换时, 需要保存程序计算器、 上下 文指针、 运行状态、 寄存器等堆栈信息。可以理解的是, 。
23、操作系统为其控制的多个线程分配 CPU 资源, 当线程获得 CPU 资源后, 即可由操作系统进行调度并执行。 0059 其中, 每一调度线程控制多个纤程实现多个处理线程的功能。纤程没有自己的堆 栈资源, 多个纤程共享其对应的调度线程的堆栈资源, 因此同一调度线程中纤程之间的切 换无需进行堆栈信息的保存, 相对于线程之间切换, 切换开销较少。可以理解的是, 纤程属 于调度线程的一部分 ; 从功能上看, 每个纤程是一个独立的功能单元 ; 在一个调度线程中 可以自由添加纤程, 纤程数目可以由用户进行配置的。 0060 为了对本发明实施例所提供的多线程管理方法进行清晰介绍, 下面首先详细介绍 一下本发。
24、明实施例所涉及的处理线程、 调度线程、 纤程的管理结构以及它们之间的结构关 系。 0061 (1) 处理线程的管理结构 : 0062 操作系统负责管理处理线程的调度、 堆栈、 运行状态等信息。处理线程管理结构 TCB 包含用于创建处理线程时所需的各种属性, 包括优先级、 入口函数、 栈大小和系统分配 的线程 ID 等信息。为统一管理所有处理线程, 还需要定义一个处理线程描述符结构, 用于 关联 TCB 结构。 0063 例如 : 处理线程管理结构实现伪代码可以如下 : 0064 0065 说 明 书 CN 103136047 A 7 5/11 页 8 0066 使用 THREAD_DESC 类。
25、型的全局数组管理所有创建的处理线程, 通过数组的索引就 可以找到相应处理线程的 TCB。线程创建后, Inuse 成员置 1, 表示该数组元素被分配到该 处理线程。 0067 (2) 调度线程管理结构 : 0068 操作系统负责管理调度线程的调度、 堆栈、 运行状态等信息。 调度线程也具有普通 线程所具有的 TCB, 包含用于创建调度线程时所需的各种属性, 包括优先级、 入口函数、 栈大 小和系统分配的线程 ID 等信息。 0069 同时, 调度线程负责管理纤程。 调度线程管理一个消息队列, 通过消息队列中消息 的个数来判断是否调度纤程。为了实现纤程的调度, 需定义一个调度线程管理结构 SCB。
26、, 该 结构包含消息队列描述符、 调度队列ready队列、 pend队列、 存储邮箱mailbox、 当前处理的 纤程描述符等信息。 0070 例如 : 调度线程管理结构实现伪代码可以如下 : 0071 0072 说 明 书 CN 103136047 A 8 6/11 页 9 0073 mailbox 中维护一个消息队列, 用于维护同一调度线程中不同纤程间发送的消息。 消息队列可以分为多种优先级, 改变了操作系统消息队列先进先出的管理模式, 增加了消 息队列的灵活性。 mailbox中消息队列采用哈希链表的管理结构, 使得不同优先级的消息入 列、 出列都非常简单。 可以理解的是, 优先级种类可。
27、以根据实际用户需求进行设置, 例如 : 可 以设置由 1 级到 5 级且优先级依次降低的 5 种优先级, 或者, 设置由 6 级到 9 级且优先级依 次升高的 4 种优先级。 0074 在结构 SCB_T 中, 有两个纤程处理队列, 一个是调度队列 ready 队列, 其用于存储 待调度的纤程 ; 另一个是 pend 队列, 其用于存储已经被调度过的纤程。其中, ready 队列 的管理机制与 mailbox 一致, 也可以拥有多种优先级, 并采用哈希链表的管理结构 ; 但其与 mailbox 不同的是, ready 队列中纤程的优先级是从调度消息的优先级中获取, 而不是自身 设定的, 这样使。
28、得纤程属性较为宽泛, 同时, 提高了纤程的灵活性, 最终使得线程调度也变 得简单高效。对于 pend 队列而言, 其与 ready 队列结构一致, 在此不再赘述。 0075 (3) 纤程管理结构 : 0076 纤程是调度线程的实体, 所有纤程都通过调度线程来控制。 在纤程的管理中, 需要 一个纤程管理结构 PCB, 其中定义了纤程名称、 存储邮箱 mailbox、 入口函数、 纤程描述符等 信息。 0077 例如 : 纤程管理结构的实现伪代码可以如下 : 0078 说 明 书 CN 103136047 A 9 7/11 页 10 0079 纤程管理结构 PCB 中也有一个 mailbox, 它。
29、与调度线程的 mailbox 管理结构一致, 都采用哈希链表的方式进行管理。不同点在于, 调度线程 mailbox 维护的是同一调度线程 中不同纤程间发送的消息, 而纤程 mailbox 维护的是其他线程、 或其他调度线程中的纤程 发送给本纤程的消息。 0080 下面基于上述对处理线程、 调度线程以及纤程的介绍, 对本发明实施例所提供的 一种多线程管理方法进行详细介绍。 0081 需要说明的是, 该方法适用于由操作系统控制多个线程的架构。多个线程包括调 度线程和处理线程。调度线程控制多个纤程实现相应多个处理线程的功能, 并且多个纤程 共享其对应的调度线程的堆栈资源。 其中, 操作系统可见处理线。
30、程和调度纤程, 不可见调度 线程所管理的纤程。可以理解的是, 操作系统为处理线程和调度线程分配 CPU 资源, 以使线 程可以被执行 ; 调度线程在获得 CPU 资源后, 可以调度执行纤程。 0082 如图 3 所示, 一种多线程管理方法, 包括 : 0083 S101, 当前被执行的调度线程获得当前被执行纤程所发送的调度消息, 所述调度 消息携带有目的标识 ; 0084 对于操作系统而言, 某一调度线程获得 CPU 资源后, 处于被调度执行状态 ; 而对于 当前被执行的调度线程而言, 被执行的是其内部的某一个纤程。 0085 在纤程被调度执行的过程中, 其会构造一个调度消息, 该调度消息携带。
31、有目的标 识。该目的标识为下一被调度执行的纤程或处理线程的标识。 0086 S102, 判断所述目的标识是否为自身内部纤程的标识, 如果是, 执行步骤 S103 ; 否 则, 执行步骤 S104 ; 0087 S103, 根据该调度消息, 从当前被执行纤程切换到具有目的标识的纤程, 以实现线 程内部纤程的切换 ; 0088 在目的标识为当前被执行的调度线程内部纤程的标识时, 则将该调度消息保存在 其对应的存储邮箱mailbox中 ; 在当前被执行纤程执行完毕后, 解析该存储邮箱mailbox中 说 明 书 CN 103136047 A 10 8/11 页 11 的调度消息, 并根据解析结果, 。
32、调度并执行该目的标识对应的纤程, 以此实现调度线程内部 纤程之间的切换。 0089 S104, 将该调度消息发送至所述目的标识对应的线程, 执行步骤 S105 ; 0090 在目的标识不为当前被执行的调度线程内部纤程的标识时, 表明该目的标识将对 应某一处理线程或者其他调度线程的纤程, 此时, 需要将该调度消息发送至相应的目的标 识对应的处理线程或目的标识对应纤程的调度纤程。 0091 S105, 在当前被执行纤程执行完毕后, 释放相应 CPU 资源, 并保存自身的堆栈信 息, 以此实现线程间的切换。 0092 当当前被执行的调度线程将该调度消息发送至其其他线程时, 其他线程对接收到 的该调度。
33、消息的处理可以为 : 0093 当所述目标标识对应的线程为处理线程时, 所述目的标识对应的线程对所述调度 消息的处理过程, 如图 4 所示, 可以包括 : 0094 S201, 接收所述调度消息 ; 0095 S202, 在所述当前被执行的调度线程的当前被执行纤程执行完毕, 并释放相应 CPU 资源后, 从操作系统获得相应 CPU 资源 ; 0096 S203, 解析所述调度消息, 并根据解析结果, 由操作系统调度并执行。 0097 当所述目的标识对应的线程为调度线程时, 所述目的标识对应的线程对所述调度 消息的处理过程, 如图 5 所示, 可以包括 : 0098 S301, 接收所述调度消息。
34、 ; 0099 S302, 将所述调度消息放置到所述目的标识对应纤程的存储邮箱中, 并将所述目 的标识对应的纤程放置到自身的调度队列中 ; 0100 S303, 在当前被执行的调度线程的当前被执行纤程执行完毕, 并释放相应 CPU 资 源后, 从操作系统获得相应的 CPU 资源 ; 0101 S304, 查询自身的调度队列, 获得所述目的标识对应纤程, 并查询所述目的标识对 应纤程的存储邮箱, 解析所述调度消息 ; 0102 S305, 根据解析结果, 调度并执行所述目的标识对应纤程。 0103 本发明实施例所提供的技术方案, 通过设置控制多个纤程实现多个处理处理的功 能的调度线程, 使得特定。
35、处理线程之间的切换转换为所述特定处理线程对应调度线程内部 的纤程之间的切换。由于纤程受调度线程控制, 且多个纤程共享其对应调度线程的堆栈资 源, 使得纤程之间的切换时间开销大大降低, 从而使得操作系统所控制的多个线程之间的 切换次数减少, 切换开销大大降低。 0104 可以理解的是, 调度消息还可携带消息优先级 ; 相应的, 当调度线程的存储邮箱或 纤程的存储邮箱中存在多个调度消息时, 按照优先级从高到低的顺序处理所述调度消息。 0105 下面结合具体的应用实例, 对本发明所提供的多线程管理方法进行介绍。 0106 具体实施例一 : 0107 如图 6 所示, 同一调度线程内不同纤程之间的调度。
36、消息传递带来的纤程调度过 程 : 0108 (1) 在某一时刻, 纤程 a1 被调度线程 A 调度执行, 如实线所示 ; 0109 (2) 在纤程 a1 被执行的过程中, 纤程 a1 构造一调度消息, 该调度消息所携带的目 说 明 书 CN 103136047 A 11 9/11 页 12 的标识为 a2 ; 0110 (3) 调度线程 A 对该调度消息进行判断后, 确定该目的标识为其自身内部纤程的 标识 ; 0111 (4)调度线程A将该调度消息放置到调度线程A的存储邮箱mailbox中, 如虚箭头 线所示 ; 0112 (5)纤程a1执行完毕后, 调度线程A重新进入纤程调度过程, 查询其m。
37、ailbox中的 调度消息并进行解析, 纤程 a1 发送的调度消息被解析出来, 如虚箭头线所示 ; 0113 (6) 根据解析结果, 纤程 a2 被调度线程 A 调度并执行, 如实线所示。 0114 本具体实施例中, 通过(1)(6)实现了同一调度线程内部不同纤程之间的切换。 0115 具体实施例二 : 0116 如图 7 所示, 不同调度线程的不同纤程之间的消息传递带来的纤程调度过程 : 0117 (1) 某一时刻, 纤程 a1 被调度线程 A 执行, 如实线所示 ; 0118 (2) 在纤程 a1 被执行的过程中, 纤程 a1 构造一调度消息, 该调度消息所携带的目 的标识为 b2 ; 0。
38、119 (3)调度线程A对所述调度消息进行判断后, 确定该目的标识为调度线程B中纤程 的标识 ; 0120 (4) 调度线程 A 将该调度消息发送给调度线程 B ; 0121 (5) 调度线程 B 将该调度消息放置到纤程 b2 的存储邮箱 mailbox 中, 如虚箭头线 所示, 并将纤程 b2 放置到自身的 ready 队列中 ; 0122 (6)调度线程A的纤程a1执行完毕后, 调度线程A释放CPU资源, 并保存自身的堆 栈信息 ; 0123 (7) 调度线程 B 获得 CPU 资源后, 进入纤程调度过程, 查询 ready 队列 ; 0124 (8)调度线程B从ready队列中解析出纤程。
39、b2, 并查询纤程b2的mailbox, 之前纤 程 a1 发送的调度消息被解析出来, 如虚箭头线所示 ; 0125 (9) 根据解析结果, 纤程 b2 被调度纤程 B 调度并执行, 如实线所示。 0126 通过本实施例的 (1) (9) 实现了不同调度线程的不同纤程之间的切换。 0127 具体实施例三 : 0128 如图 8 所示, 处理线程与调度线程之间的调度消息传递带来的纤程调度过程 : 0129 (1) 在某一时刻, 处理线程 C 被操作系统调度执行 ; 0130 (2) 在处理线程 C 被执行的过程中, 处理线程 C 构造一调度消息, 该调度消息所携 带的目的标识为 b2 ; 013。
40、1 (3) 处理线程 C 将该调度消息发送至调度线程 B ; 0132 (4) 调度线程 B 将该调度消息放置到纤程 b2 的存储邮箱 mailbox 中, 如虚箭头线 所示所示, 并将纤程 b2 放置到自身的 ready 队列中 ; 0133 (5) 处理线程 C 执行完毕后, 处理纤程 C 释放 CPU 资源, 并保存自身的堆栈信息 ; 0134 (6) 调度线程 B 获得 CPU 资源后, 进入纤程调度过程, 查询 ready 队列 ; 0135 (7)调度线程B从调度队列ready中解析出纤程b2, 并查询纤程b2的mailbox, 之 前纤程 a1 发送的调度消息被解析出来, 如虚箭。
41、头线所示 ; 0136 (8) 根据解析结果, 纤程 b2 被调度纤程 B 调度并执行, 如实线所示。 说 明 书 CN 103136047 A 12 10/11 页 13 0137 通过本实施例的 (1) (8) 实现了普通线程与调度线程中纤程的切换。 0138 综上所述, 调度线程进行纤程调度的基本条件有两个 : 调度线程的存储邮箱 mailbox中有调度消息或者调度线程的ready队列不为空。 当两个条件同时存在时, 可以根 据实际需求来决定是先处理 mailbox 中的消息, 还是 ready 队列中的纤程。由于具有两个 不同的调度条件, 因此每个调度线程可以采用不同的调度算法, 使用。
42、比较灵活。比如 : 在调 度线程A中, 优先处理该调度线程内部不同纤程间的消息, 则在调度时首先查询mailbox中 的消息队列 ; 在调度纤程 B 中, 优先处理其他线程发送给该线程的消息, 则在调度时优先查 询 ready 队列。需要说明的是, 在某一时刻, 一个调度线程只能采用一种调度方式, 但是, 对 于调度线程的整个调度过程而言, 其调度机制可以在运行过程中根据实际的调度消息流进 行动态配置, 进而增加系统的灵活性, 并提高系统效率。 0139 通过以上的方法实施例的描述, 所属领域的技术人员可以清楚地了解到本发明可 借助软件加必需的通用硬件平台的方式来实现, 当然也可以通过硬件, 。
43、但很多情况下前者 是更佳的实施方式。基于这样的理解, 本发明的技术方案本质上或者说对现有技术做出贡 献的部分可以以软件产品的形式体现出来, 该计算机软件产品存储在一个存储介质中, 包 括若干指令用以使得一台计算机设备 ( 可以是个人计算机, 服务器, 或者网络设备等 ) 执 行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括 : 只读存储器 (ROM)、 随机存取存储器 (RAM)、 磁碟或者光盘等各种可以存储程序代码的介质。 0140 相应的, 本发明实施例还提供一种多线程管理架构, 如图 9 所示, 可以包括 : 0141 操作系统、 调度线程以及处理线程 ; 0142 所述。
44、调度线程控制多个纤程实现相应多个处理线程的功能, 且所述多个纤程共享 其对应调度线程的堆栈资源 ; 0143 其中, 适用于所述多线程管理架构的多线程管理方法包括 : 0144 当前被执行的调度线程获得当前被执行纤程所发送的调度消息, 所述调度消息携 带有目的标识 ; 0145 判断所述目的标识是否为自身内部纤程的标识, 如果是, 则根据所述调度消息, 从 当前被执行纤程切换到具有目的标识的纤程, 以实现线程内部纤程的切换 ; 0146 否则, 将所述调度消息发送至所述目的标识对应的线程, 并且在当前被执行纤程 执行完毕后, 释放相应 CPU 资源, 并保存自身的堆栈信息, 以此实现线程间的切。
45、换。 0147 对于装置或系统实施例而言, 由于其基本相应于方法实施例, 所以相关之处参见 方法实施例的部分说明即可。以上所描述的装置或系统实施例仅仅是示意性的, 其中所述 作为分离部件说明的单元可以是或者也可以不是物理上分开的, 作为单元显示的部件可以 是或者也可以不是物理单元, 即可以位于一个地方, 或者也可以分布到多个网络单元上。 可 以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。 本领域普通 技术人员在不付出创造性劳动的情况下, 即可以理解并实施。 0148 在本发明所提供的几个实施例中, 应该理解到, 所揭露的系统, 装置和方法, 在没 有超过本申请的精神和范围。
46、内, 可以通过其他的方式实现。当前的实施例只是一种示范性 的例子, 不应该作为限制, 所给出的具体内容不应该限制本申请的目的。例如, 所述单元或 子单元的划分, 仅仅为一种逻辑功能划分, 实际实现时可以有另外的划分方式, 例如多个单 元或多个子单元结合一起。另外, 多个单元可以或组件可以结合或者可以集成到另一个系 说 明 书 CN 103136047 A 13 11/11 页 14 统, 或一些特征可以忽略, 或不执行。 0149 另外, 所描述系统, 装置和方法以及不同实施例的示意图, 在不超出本申请的范围 内, 可以与其它系统, 模块, 技术或方法结合或集成。 另一点, 所显示或讨论的相互。
47、之间的耦 合或直接耦合或通信连接可以是通过一些接口, 装置或单元的间接耦合或通信连接, 可以 是电性, 机械或其它的形式。 0150 以上所述仅是本发明的具体实施方式, 应当指出, 对于本技术领域的普通技术人 员来说, 在不脱离本发明原理的前提下, 还可以做出若干改进和润饰, 这些改进和润饰也应 视为本发明的保护范围。 说 明 书 CN 103136047 A 14 1/4 页 15 图 1 图 2 图 3 说 明 书 附 图 CN 103136047 A 15 2/4 页 16 图 4 图 5 说 明 书 附 图 CN 103136047 A 16 3/4 页 17 图 6 图 7 说 明 书 附 图 CN 103136047 A 17 4/4 页 18 图 8 图 9 说 明 书 附 图 CN 103136047 A 18 。