CN103034478B - 一种im系统的独立业务线程模型实现方法 - Google Patents
一种im系统的独立业务线程模型实现方法 Download PDFInfo
- Publication number
- CN103034478B CN103034478B CN201110299881.8A CN201110299881A CN103034478B CN 103034478 B CN103034478 B CN 103034478B CN 201110299881 A CN201110299881 A CN 201110299881A CN 103034478 B CN103034478 B CN 103034478B
- Authority
- CN
- China
- Prior art keywords
- function
- thread
- interface
- task
- separate traffic
- 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.)
- Active
Links
Landscapes
- Stored Programmes (AREA)
- Telephonic Communication Services (AREA)
Abstract
本发明公开了一种IM系统的独立业务线程模型实现方法,该方法中独立业务线程的实现方式是标准的动态库模块,在所述模块内提供任务操作函数;所述独立业务线程包括:纯虚接口类及接口函数定义、实现定义、创建和结束线程、实现接口函数、定义任务的执行。所述独立业务线程完全分离界面线程,将业务处理置于独立业务线程中。在某种程度上减小界面线程阻塞,提高用户界面响应速度和平滑性,保护业务执行中的数据一致性。
Description
技术领域
本发明涉及软件线程,特别是涉及一种IM系统的独立业务线程模型实现方法。
背景技术
现有的IM(InstantMessaging,即时通讯、实时传讯)客户端软件中线程包括:主线程、UI(UserInterface,用户界面)线程、业务线程。
其中,业务线程是指软件中与业务相关的数据的加工过程,一般可以分为以数据处理为核心的数据流,以及以控制调度为核心的控制流,在软件系统中起着核心的、支撑的作用。
用户界面是软件用来接受用户操作和向用户反馈信息的接口。用户可以通过它启动、监控和终止软件中业务逻辑,可以说几乎任何软件都离不开用户界面。
目前,公司几乎所有的软件中,用户界面和业务线程都紧紧地耦合在一起,基本上形成了一个有机的整体。主要体现在如下几个方面:1)在控制类事件处理函数中执行业务逻辑相关的操作,如在云台控制按钮的单击响应函数中发送云台控制命令;2)在执行业务逻辑的线程中向界面主线程发送消息,如解码线程中发送消息实现视频解码。
但是,用户界面和业务逻辑间的紧耦合,不仅会降低软件的模块化、层次化程度,同时在某种程度上可能阻塞界面线程,影响用户界面响应速度和平滑性。
发明内容
本发明提供了一种IM系统的独立业务线程模型实现方法,所述独立业务线程完全分离界面线程,将业务处理置于独立业务线程中,在某种程度上减小界面线程阻塞,提高用户界面响应速度和平滑性。
为达到上述目的,本发明的技术方案是这样实现的:
一种IM系统的独立业务线程模型实现方法,其中独立业务线程的实现方式是标准的动态库模块,在所述模块内提供任务操作函数;
所述独立业务线程包括:纯虚接口类及接口函数定义,实现定义,创建和结束线程,定义任务的执行;
独立业务线程的所述接口,使功能组件将任务排队放入线程队列。
在上述方法中,所述接口定义包括定义纯虚接口类和接口函数。
在上述方法中,所述接口函数包括开始任务函数,创建任务函数,增加任务函数,停止任务函数。
在上述方法中,所述实现定义包括:
从所述纯虚接口类中派生具体接口实现定义;
实现所述接口函数派生定义。
在上述方法中,所述创建和结束线程包括;
在开始函数中创建所述独立业务线程;
在停止函数中发送终止所述独立业务线程消息。
在上述方法中,所述实现接口函数包括:
实现所述标准的动态库模块注册到框架的函数、以及实现退出函数;
创建任务函数:实现创建任务和参数内存的分配;
增加任务函数:实现增加业务消息到业务线程中。
在上述方法中,所述参数内存的分配包括:
为任务中的输入输出参数进行内存分配。
在上述方法中,所述独立业务线程的实现包含在任务服务组件模块中;
所述任务服务组件模块的实现包括:定义服务组件接口和调用目标组件。
所述定义服务组件接口包括:定义组件的接口及功能函数;
所述调用目标组件包括:在独立业务线程中实现调用目标组件的标准命令接口。
在上述方法中所述定义任务的执行包括:
对于事件型任务的执行:查找参数中指定的组件,应用查找得到的组件指针调用组件的执行命令函数来执行命令功能,最后销毁参数的内存;
对于普通型任务的执行:查找参数中指定的目标组件,应用查找到的组件指针调用组件的执行命令函数来执行命令功能,再通过查找参数中指定的目标组件,应用查找到的组件指针调用组件的执行命令函数的方法来实现源回调功能。其中源回调是指在任务的参数中指定调用目标功能指定回调的返回参数,调用回调功能函数,最后销毁参数的内存。
该方法进一步包括:
在下行业务中,界面线程添加任务到独立业务线程中;所述独立业务线程通过执行命令的方式对上层业务进行调用;所述上层业务通过执行命令的方式对下层业务进行调用;所述下层业务通过执行命令的方式对网络层的功能进行调用;所述网络层再将数据进行发送。
该方法进一步包括:
在上行业务中,下层业务通过执行命令的方式对网络层的功能进行调用,所述网络层根据接收到的数据进行解析,并反馈给所述下层业务;下层业务添加任务到所述独立业务线程中;所述独立业务线程通过执行命令的方式对上层业务进行调用;所述上层业务添加任务到界面线程。
由上述可见,本发明提供了一种IM系统的独立业务线程模型实现方法,该方法中独立业务线程的实现方式是标准的动态库模块,在所述模块内提供任务操作函数;所述独立业务线程包括:接口定义,实现定义,创建和结束线程,定义任务的执行。所述独立业务线程完全分离界面线程,将业务处理置于独立业务线程中,在某种程度上减小界面线程阻塞,提高用户界面响应速度和平滑性。
附图说明
图1是本发明的独立业务线程模块示意图;
图2是本发明实例中独立业务线程模型切换示意图;
图3是本发明中独立业务线程实现方法中添加任务到独立业务线程的方法。
具体实施方式
为了使本发明的目的、技术方案和优点更加清楚,下面结合附图和具体实施例对本发明进行详细描述。
图1是本发明的独立业务线程模块示意图。为完成分离界面线程,创建独立业务线程,将业务处理置于独立业务线程中,使其不阻塞界面线程,提高用户界面响应速度和平滑性。并且在所述独立业务线程中使用消息机制,因为所述独立业务线程一般为单线程,且并提供接口使功能组件将任务排队进入线程队列,减少了不必要的同步开支。其中,只应用于Windows的PostThreadMessage消息发送机制。并且对于重要消息也不需要重复发送。PostThreadMessage函数功能:该函数将一个消息放入(寄送)到指定线程的消息队列里,不等待线程处理消息就返回
独立业务线程的实现方式是标准的动态库模块,在所述模块内提供任务操作函数;所述独立业务线程包括:纯虚接口类及接口函数定义,实现定义,创建和结束线程,定义任务的执行。
另外,所述独立业务线程的实现包含在任务服务组件模块中,所述任务服务组件模块的实现包括:定义服务组件接口、调用目标组件。
其中,所述定义服务组件接口包括:定义组件接口及功能函数;所述调用目标组件包括:独立业务线程实现中调用目标组件的标准命令接口。
独立业务线程实现
独立业务线程的实现方式是标准的动态库模块,在模块内提供任务操作函数,并且独立业务线程的接口,使功能组件将任务排队放入线程队列。所述独立业务线程实现包括:纯虚接口类及接口函数定义,实现定义,创建和结束线程,实现接口函数,定义任务的执行。
1、纯虚接口类及接口函数定义
其中所述接口函数包括开始任务函数,创建任务函数,增加任务函数,停止任务函数。
2、实现定义
所述实现定义从定义的接口中派生,即从所述纯虚接口类中派生具体接口实现定义,并在实现定义中实现接口函数派生定义。
3、创建和结束线程
在开始函数中创建独立业务线程。
在停止函数中发送终止独立业务线程消息。
4、实现接口函数
实现接口函数包括:创建任务函数、增加任务函数、和实现模块注册到框架的函数、以及实现退出函数。
其中创建任务函数是指实现创建任务和参数内存的分配;增加任务函数是指实现增加业务消息到独立业务线程中。所述参数内存的分配包括:为任务中的输入输出参数进行内存分配。
5、定义任务的执行
对于不同的任务类型,采用不同的任务执行方式。
A、事件型任务
对于事件性任务的执行:首先,查找参数中指定的组件,应用查找得到的组件指针调用组件的执行命令函数来执行命令功能,最后销毁参数的内存。
B、普通型任务
对于事件性任务的执行:首先,查找参数中指定的目标组件,应用查找到的组件指针调用组件的执行命令函数来执行命令功能,再通过查找参数中指定的目标组件,应用查找到的组件指针调用组件的执行命令函数的方法来实现源回调功能。其中源回调是指在任务的参数中指定调用目标功能指定回调的返回参数,调用回调功能函数,最后销毁参数的内存。
其中,销毁参数的内存,即内存分配释放,主要是在任务组件内实现内存分配释放,调用者无需释放;内存释放在线程任务执行完成后自动释放。
实例一
业务模型切换。图2是本发明实例中独立业务线程模型切换示意图。
下行业务:
101,界面线程添加任务到独立业务线程中;
102,所述独立业务线程通过执行命令的方式对上层业务进行调用;
103,所述上层业务通过执行命令的方式对下层业务进行调用;
104,所述下层业务通过执行命令的方式对网络层的功能进行调用;所述网络层再将数据进行发送。
下行业务:
101,下层业务通过执行命令的方式对网络层的功能进行调用,所述网络层根据接收到的数据进行解析,并反馈给所述下层业务;
102,下层业务添加任务到独立业务线程中;
103,所述独立业务线程通过执行命令的方式对上层业务进行调用;
104,上层业务添加任务到界面线程。
实例二
下面以下层业务通知上层业务实例来具体说明添加任务到独立业务线程的方法。图3是本发明中独立业务线程实现方法中添加任务到独立业务线程的方法。具体步骤包括:
101,得到线程模块
102,创建任务|分配内存
103,目标参数赋值
104,增加任务到独立业务线程
综上所述,本发明提供了一种IM系统的独立业务线程模型实现方法,该方法中独立业务线程的实现方式是标准的动态库模块,在所述模块内提供任务操作函数;所述独立业务线程包括:纯虚接口类及接口函数义、实现定义、创建和结束线程、定义任务的执行。所述独立业务线程完全分离界面线程,将业务处理置于独立业务线程中。在某种程度上减小界面线程阻塞,提高用户界面响应速度和平滑性。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。
Claims (10)
1.一种IM系统的独立业务线程模型实现方法,其特征在于,
独立业务线程的实现方式是标准的动态库模块,在动态库模块内提供任务操作函数;
所述独立业务线程的实现包括:纯虚接口类及接口函数定义,实现定义,创建和结束线程,实现接口函数,定义任务的执行;
独立业务线程的接口,使功能组件将任务排队放入线程队列。
2.根据权利要求1所述的方法,其特征在于,所述接口函数包括:开始任务函数、创建任务函数、增加任务函数、停止任务函数。
3.根据权利要求1所述的方法,其特征在于,所述实现定义包括:
从所述纯虚接口类中派生具体接口实现定义;
实现所述接口函数派生定义。
4.根据权利要求2所述的方法,其特征在于,所述创建和结束线程包括;
在开始函数中创建所述独立业务线程;
在停止函数中发送终止所述独立业务线程消息。
5.根据权利要求2所述的方法,其特征在于,所述实现接口函数包括:
实现所述标准的动态库模块注册到框架的函数,以及实现退出函数;
创建任务函数:实现创建任务和参数内存的分配;
增加任务函数:实现增加业务消息到业务线程中。
6.根据权利要求5所述的方法,其特征在于,所述参数内存的分配包括:
为任务中的输入输出参数进行内存分配。
7.根据权利要求1所述的方法,其特征在于,所述独立业务线程的实现包含在任务服务组件模块中;
所述任务服务组件模块的实现包括:定义服务组件接口、调用目标组件;
所述定义服务组件接口包括:定义组件的接口及功能函数;
所述调用目标组件包括:在独立业务线程实现中调用目标组件的标准命令接口。
8.根据权利要求1所述的方法,其特征在于,所述定义任务的执行包括:
事件型任务的执行:查找参数中指定的组件,应用查找得到的组件指针调用组件的执行命令函数来执行命令功能,最后销毁参数的内存;
普通型任务的执行:查找参数中指定的目标组件,应用查找到的组件指针调用组件的执行命令函数来执行命令功能,再通过查找参数中指定的目标组件,应用查找到的组件指针调用组件的执行命令函数的方法来实现源回调功能;其中源回调是指在任务的参数中指定调用目标功能指定回调的返回参数,调用回调功能函数,最后销毁参数的内存。
9.根据权利要求1至8中任一项所述的方法,其特征在于,该方法进一步包括:
在下行业务中,界面线程添加任务到独立业务线程中;所述独立业务线程通过执行命令的方式对上层业务进行调用;所述上层业务通过执行命令的方式对下层业务进行调用;所述下层业务通过执行命令的方式对网络层的功能进行调用;所述网络层再将数据进行发送。
10.根据权利要求1至8中任一项所述的方法,其特征在于,该方法进一步包括:
在上行业务中,下层业务通过执行命令的方式对网络层的功能进行调用,所述网络层根据接收到的数据进行解析,并反馈给所述下层业务;下层业务添加任务到所述独立业务线程中;所述独立业务线程通过执行命令的方式对上层业务进行调用;所述上层业务添加任务到界面线程。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110299881.8A CN103034478B (zh) | 2011-09-29 | 2011-09-29 | 一种im系统的独立业务线程模型实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110299881.8A CN103034478B (zh) | 2011-09-29 | 2011-09-29 | 一种im系统的独立业务线程模型实现方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103034478A CN103034478A (zh) | 2013-04-10 |
CN103034478B true CN103034478B (zh) | 2015-11-18 |
Family
ID=48021406
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201110299881.8A Active CN103034478B (zh) | 2011-09-29 | 2011-09-29 | 一种im系统的独立业务线程模型实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103034478B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106228680A (zh) * | 2016-07-27 | 2016-12-14 | 浪潮(苏州)金融技术服务有限公司 | 一种基于票据模块多线程驱动方法 |
CN107766035A (zh) * | 2016-08-18 | 2018-03-06 | 北京北信源软件股份有限公司 | 一种跨平台的即时通信sdk接入系统 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20010017632A1 (en) * | 1999-08-05 | 2001-08-30 | Dina Goren-Bar | Method for computer operation by an intelligent, user adaptive interface |
CN101685392A (zh) * | 2008-09-27 | 2010-03-31 | 盛乐信息技术(上海)有限公司 | 实现用户界面与业务逻辑分离的装置 |
CN101872305A (zh) * | 2010-06-08 | 2010-10-27 | 用友软件股份有限公司 | Ui表现和业务逻辑分离方法和系统 |
-
2011
- 2011-09-29 CN CN201110299881.8A patent/CN103034478B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20010017632A1 (en) * | 1999-08-05 | 2001-08-30 | Dina Goren-Bar | Method for computer operation by an intelligent, user adaptive interface |
CN101685392A (zh) * | 2008-09-27 | 2010-03-31 | 盛乐信息技术(上海)有限公司 | 实现用户界面与业务逻辑分离的装置 |
CN101872305A (zh) * | 2010-06-08 | 2010-10-27 | 用友软件股份有限公司 | Ui表现和业务逻辑分离方法和系统 |
Also Published As
Publication number | Publication date |
---|---|
CN103034478A (zh) | 2013-04-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105893157B (zh) | 一种开放分布式系统资源管理与任务调度系统与方法 | |
CN103297395B (zh) | 一种互联网业务的实现方法、系统以及装置 | |
CN112882813B (zh) | 任务调度方法、装置、系统及电子设备 | |
CN102541659B (zh) | 一种服务器业务请求处理方法和装置 | |
US9703595B2 (en) | Multi-core system with central transaction control | |
CN112148455B (zh) | 一种任务处理方法、设备及介质 | |
KR20180091709A (ko) | 패킷 기반 데이터 메시지 전송의 시퀀스 의존 동작 처리 | |
CN101142568A (zh) | 用于调度设备管理的系统和方法 | |
CN101882089A (zh) | 一种采用多线程处理业务会话应用的方法及装置 | |
CN104572290A (zh) | 消息处理线程的控制方法及装置 | |
US20170047069A1 (en) | Voice processing method and device | |
KR20080109412A (ko) | 예측 기반 동적 쓰레드 풀 조정방법 및 이를 사용하는에이전트 플랫폼 | |
CN102520936A (zh) | 一种在Android上实现Socket通讯服务共享的方法 | |
WO2012116513A1 (zh) | 并发优化的bpmn组合服务执行引擎及方法 | |
CN104506881A (zh) | 一种音视频分片转码调度方法 | |
CN103034478B (zh) | 一种im系统的独立业务线程模型实现方法 | |
CN107071067B (zh) | 一种基于Cgo的高性能证券行情接入系统和方法 | |
CN113515363B (zh) | 面向异型任务高并发的多层次数据处理系统动态调度平台 | |
CN114201294A (zh) | 一种任务处理方法、装置、系统、电子设备及存储介质 | |
CN101227323A (zh) | 实现界面配置和命令行配置同步操作数据的方法及系统 | |
CN115550354A (zh) | 一种数据处理方法、装置及计算机可读存储介质 | |
US10033781B2 (en) | Streaming data on data processes | |
CN105094990A (zh) | 一种高效的实现大规模数据交换的系统及其方法 | |
CN104580209A (zh) | 实现多平台消息处理的装置及方法 | |
CN111722942A (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 | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CP02 | Change in the address of a patent holder | ||
CP02 | Change in the address of a patent holder |
Address after: Room 818, 8 / F, 34 Haidian Street, Haidian District, Beijing 100080 Patentee after: BEIJING ULTRAPOWER SOFTWARE Co.,Ltd. Address before: 100089 Beijing city Haidian District wanquanzhuang Road No. 28 Wanliu new building A block 5 layer Patentee before: BEIJING ULTRAPOWER SOFTWARE Co.,Ltd. |