CN105607904A - 基于Linux平台的通信软件的快速开发框架及使用方法 - Google Patents

基于Linux平台的通信软件的快速开发框架及使用方法 Download PDF

Info

Publication number
CN105607904A
CN105607904A CN201510952542.3A CN201510952542A CN105607904A CN 105607904 A CN105607904 A CN 105607904A CN 201510952542 A CN201510952542 A CN 201510952542A CN 105607904 A CN105607904 A CN 105607904A
Authority
CN
China
Prior art keywords
thread
module
timer
message
daily record
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.)
Granted
Application number
CN201510952542.3A
Other languages
English (en)
Other versions
CN105607904B (zh
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.)
Nanjing Panda Electronics Co Ltd
Nanjing Panda Communication Technology Co Ltd
Original Assignee
Nanjing Panda Electronics Co Ltd
Nanjing Panda Communication Technology 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 Nanjing Panda Electronics Co Ltd, Nanjing Panda Communication Technology Co Ltd filed Critical Nanjing Panda Electronics Co Ltd
Priority to CN201510952542.3A priority Critical patent/CN105607904B/zh
Publication of CN105607904A publication Critical patent/CN105607904A/zh
Application granted granted Critical
Publication of CN105607904B publication Critical patent/CN105607904B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/31Programming languages or programming paradigms
    • G06F8/316Aspect-oriented programming techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/38Creation or generation of source code for implementing user interfaces

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Computing Systems (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明公开了一种基于Linux平台的通信软件的快速开发框架及其使用方法,该框架包括公共支撑库和多线程开发框架,所述公共支撑库包括配置文件读写模块、分级打印模块、日志长时间保存模块、定时器管理模块和通用链表模块,所述多线程开发框架包括消息管理模块、线程池管理模块、线程自启动模块。本发明一方面包括了配置文件读写、分级打印、日志长期保存、高精度定时器、通用链表等实用的公共支撑功能,另一方面,包含设计了精妙的多线程开机按序启动机制,并提供了多线程间消息交互机制,很好的支持了各通信接口间消息交互。

Description

基于Linux平台的通信软件的快速开发框架及使用方法
技术领域
本发明涉及一种基于Linux平台的通信软件的快速开发框架及使用方法,属于通信技术领域。
背景技术
由于Linux/Unix系统的稳定性和开源特性,现在大量的通信设备都使用Linux或类
Linux操作系统,能更好的满足各种通信软件长时间不间断运行需求。现在很多通信软件运行于后台,无需界面,并要求交互实时性和高效性,所以大量通信软件基于C语言做开发。但是在Linux平台C项目开发过程中,开发人员会发现,该平台下缺少类似于微软系统强大的API函数库和MFC类库支撑,实际开发中来有诸多不便。如:没有提供易用的定时器功能,虽然系统包含alarm和select等函数,可实现定时功能,但使用复杂,且使用复杂,而在通信协议栈流程交互、状态机控制等过程中,定时器是广泛使用的;另在多线程开发中,消息队列和线程间收发消息交互方式使用广泛,Linux系统标准函数库,未提供消息队列交互,需开发人员自行实现。
还有一些功能是基于通信软件自身特性,所必备且可雷同的功能,但开发起来并不
简单,需花费大量人力做设计开发和调试验证。通信软件一般启动时按一定配置参数启动,然后不间断运行的,并区别于一些监控软件或有界面软件,此类软件可能没有图形化界面,运行于后台,采取定期维护或出现故障时,回溯日志来查找和定位故障的方法来维护的。
发明内容
为克服现有技术的不足,本发明提供了一种基于Linux平台的通信软件的快速开发框架及其使用方法。
本发明采取的技术方案之一是:
一种基于Linux平台的通信软件的快速开发框架,其包括公共支撑库和多线程开发框架,所述公共支撑库包括配置文件读写模块、分级打印模块、日志长时间保存模块、定时器管理模块和通用链表模块,所述多线程开发框架包括消息管理模块、线程池管理模块、线程自启动模块;
所述配置文件读写模块,用于实现配置文件读写功能,并封装成易使用的接口函数,模块内部使用文件读写、字符串处理、数字字符类型转换函数实现,供开发者调用;
所述分级打印模块,用于在日志打印时,按打印级别区分和控制日志输出;
所述日志长时间保存模块,用于保证软件运行状态可追溯,其依据时间和存储空间两条线,转存程序日志;
所述定时器管理模块,用于定时器管理,包括定时器管理结构初始化、定时器模块销毁、定时器设置、循环定时器设置、定时器中止和定时器轮询操作,实现精度达10ms以内的定时器操作;
所述通用链表模块,用于提供一套通用链表接口,供开发者使用;
所述消息管理模块,按照每个线程/任务,具有自身独用的一条消息队列,当其他线程给本线程发送消息时,即将该消息挂载到本线程的消息队列下,本线程/任务在线程执行函数中,定期轮询检测自身消息队列内是否有消息,若有则按照先进先出方式,接收后予以处理;
所述线程池管理模块,用于线程设计和划分,其包括线程是否启动标识位,线程/任务名称、线程运行函数、线程启动时间和线程启动参数;
所述线程自启动模块,该模块轮询线程池结构,按照是否启动运行的标志位,以及时间顺序,按序按要求启动设计好的各个用户线程。
进一步的,所述配置文件读写模块中配置项,以键值格式定义,以分号结束;配置文件支持多种注释方式,支持键值左右的空格符自动识别。
进一步的,所述分级打印模块提供8种打印级别,可随时修改打印级别,且各打印级别可任意组合输出。
进一步的,所述日志长时间保存模块依据时间和存储空间两条线,转存程序日志,当时间上满足一定条件时(如满10小时或1天),将日志转存至另一文件夹内,并以时间信息命名该日志文件,同时定期检测当前打印的日志文件大小,若超过一定大小(如10MB),则转存一次日志文件,在日志转存时,检测日志保存目录的总大小,若超过一定大小(如1GB),则覆盖最早的文件空间,不分配新的存储空间。
进一步的,所述定时器管理模块的内部采用互斥锁方式,满足多线程同时操作使用,其定时方式是将用户定时的时间,全部转化为系统tick计数,按超时顺序,按序管理定时器链表,通过快节奏的定期轮询方式,查看当前有哪些定时器超时,并发送超时消息。
本发明采取的技术方案之二是:
一种基于权利要求1中开发框架的使用方法,其特征在于包括如下步骤:
步骤1:设计好自身项目所需的配置项,按键值格式写好配置文件和程序内配置结构体;
步骤2:做好线程划分工作,设计好线程间交互数据,即各种消息的消息名和数据定义,写好用户自身业务各线程的线程初始化、线程循环;
步骤3:开始使用快速开发框架,完成程序开发;首先程序启动初期,调用配置文件读写模块接口,读取整个配置文件信息,到程序设计的结构体中;
步骤4:调用分级打印模块接口,设置打印输出文件;
步骤5:调用分级打印模块接口,设置程序的输出打印级别,
步骤6:调用日志长时间保存模块接口,使程序日志可永久保存,每一个程序日志文件,有最大字节数要求,且都按时间信息命名,以利于回溯管理;
步骤7:调用定时器模块接口,完成定时器模块初始化;
步骤8:调用消息管理模块接口,完成消息管理模块初始化,以便后续各业务线程启动后,完成线程间消息通信交互;
步骤9:调用线程池管理模块接口,完成线程池模块数据的初始化和设置;
步骤10:调用线程自启动模块接口,完成定时器线程、用户设计的各个业务线程的自动化的启动和运行;
步骤11:写一个while(1)循环,循环内调用sleep或者usleep函数,让主线程开始空转。
本发明的有益效果是:本发明在Linux/Unix平台C语言开发过程中,具有适用性,且运行高效可靠,大大减少开发工作量。其包括了配置文件读写、分级打印控制、日志长期保存、高精度定时器、通用链表等实用的公共支撑功能,另一方面,运用线程池技术,本发明设计了精妙的多线程开机按序启动机制,并提供了多线程间消息交互机制,很好的支持了各通信接口间消息交互。
附图说明
图1为本发明在通信设备中位置示意图。
图2为本发明模块构成示意图。
图3为本线程自启动模块处理流程图。
图4为本发明软件快速框架具体应用过程示意图。
具体实施方式
下面结合附图和具体实施例对本发明进行详细说明。
本发明的快速开发框架,在整个通信设备与软件研发过程中的地位如图1所示,本快速开发框架,是基于对Linux/Unix类操作系统标准库函数的封装应用,可使用gcc或arm_linux-gcc(ARM平台)编译器编译运行,为使用者封装提供了大量可重用的和基础功能开发接口,同时提供了一套多线程启动与交互机制,为使用者提供便利,使使用者无需专注于外围模块和一些公共功能的开发,而专心于具体的通信业务和流程开发。
本开发框架由两大块组成,同时又分为多个子模块。通信软件常用必备功能的封装,我们称之为公共支撑库;多线程按序自启动和交互机制,我们称之为多线程开发框架,如下图2所示。其中公共支撑库由配置文件读写模块、分级打印模块、日志长时间保存模块、定时器管理模块、通用链表模块组成,而多线程开发框架包括消息管理模块、线程池管理模块、线程自启动模块,使多线程开发变得简单易行。
(1)配置文件读写模块
在一些简易程序中,软件的启动参数,可依靠main函数携带的入参方式解决,但在实践的软件项目开发中,由于程序启动所需配置项或参数较多,此方法变得并不现实。一般的,大家都依靠读取配置文件中配置项方式解决。
本框架实现了配置文件读写功能,并封装成易使用的接口函数,模块内部使用文件读写、字符串处理、数字字符类型转换等函数实现,供开发者调用。
配置文件中配置项,以键值格式定义,以分号结束,即key1=value1;配置文件支持多种注释方式,支持键值左右的空格符自动识别。如下:
/*配置文件,模板*/
my_cfg:
{
version=1.0.0;/*softversion*/
if_name=eth0;//netinterfacename
local_ip=172.16.54.88;#localip
local_port_udp=1001;
peer_port_udp=1002;
debug_level=7;
debug_output=log;
log_backup_interval=36000;
log_backup_dir=log_backup;
};
用户可自定义相应的配置项结构体,用于存储从配置文件读入的键的值。如:
/*configurationstruct*/
typedefstruct
{
charversion[COMMON_STR_LEN];;
charif_name[COMMON_STR_LEN];
charlocal_ip[IP_ADDR_LEN];
uint16local_port_udp;
uint16peer_port_udp;
uint8debug_level;
chardebug_output[FILENAME_MAXLEN];
uint32log_backup_interval;
charlog_backup_dir[FILENAME_MAXLEN];
}Cfg_t;
开发者可在程序启动时调用配置文件读入接口,读入各配置项,接口如下:
intconfig_file_read(Cfg_t*cfg_p,constchar*cfg_filename);
(2)分级打印模块
程序根据不同的情况,需打印不同级别的log,有时仅需程序运行错误信息,有时需
告警信息,有时还需要用户级别的日志,甚至支持调试用的日志,所以在日志打印时,按打印级别区分和控制日志输出,是很有必要的。
一般的,将程序打印级别、日志保存目录、文件名,可指定在配置文件中,在系统启动时,从配置文件读入此信息,根据此信息,初始化打印输出文件和输出级别。本开发框架默认提供8种打印级别,可随时修改打印级别,且各打印级别可任意组合输出。
如配置文件中设置debug_level=7;二进制按位表示,即00000111,即打开错误打印、告警打印、一般用户打印日志,用于以后维护。打印输出位置,可以为stdout,即可输出到屏幕,亦可保存到本地具体某目录某文件中。
每条打印输出头部,包含打印时间信息、打印级别、打印所在程序的文件名、函数名、行号等详细信息。如:
//打印级别
#defineDEBUG_ERROR1//bit0
#defineDEBUG_WARN2//bit1
#defineDEBUG_USER_PRINT4//bit2
#defineDEBUG_DEBUG_PRINT8//bit3
#defineDEBUG_LEVEL516//bit4
#defineDEBUG_LEVEL632//bit5
#defineDEBUG_LEVEL764//bit6
#defineDEBUG_LEVEL8128//bit7
//设置打印文件接口
int32debug_set_output(char*filename);
//设置打印级别接口
int32debug_set_flag(uint8level,uint8op);
(3)日志长时间保存模块
通信软件一般都是监控某通信接口、或者外围输入输出设备操作,保持24小时不间断运行,且通常情况下无人值守,所以需要有一套机制,保证软件运行状态的可追溯性。
本软件框架,依据时间和空间两条线,转存程序日志。时间上满足一定条件(如满10小时或1天),将日志转存至另一文件夹内,以时间信息命名该日志文件,以利于日志回溯。另定期检测当前打印的日志文件大小,若超过一定大小(如10MB),亦转存一次日志文件。在日志转存时,检测日志保存目录的总大小,若超过一定大小(如1GB),则覆盖最早的文件空间,不分配新的存储空间。
(4)定时器管理模块
在通信流程处理、状态机控制方面,定时器的设置和应用,是必不可少的。而各Linux
平台下,一般不提供现成的定时器操作函数库。本定时器模块,提供了定时器管理功能,包括定时器管理结构初始化、定时器模块销毁、定时器设置、循环定时器设置、定时器中止、定时器轮询操作等,实现精度达10ms以内的定时器操作。
该定时器模块,内部采用互斥锁方式,满足多线程同时操作使用,定时方式是将用户定时的时间,全部转化为系统tick计数,按超时顺序,按序管理定时器链表,通过快节奏的定期轮询方式,查看当前有哪些定时器超时。用户设置定时器时,指定该定时器超时时长、超时处理的线程、超时处理参数等信息,当轮询到该定时器超时时,触发发送特定超时消息,到指定的任务/线程,消息内容包含设置定时器时,用户给予的超出处理参数,用户即可在自己的线程,执行自身定义的超时处理函数了。
(5)通用链表模块
链表是最常见最实用的数据结构,开发过程中用到的概率很高,本框架实现了一套
通用链表接口,供开发者使用,接口丰富,能满足一般性的要求。包括链表的初始化、统计链表节点个数、插入、删除、获取特定节点等一般操作,亦包含插入特定位置、删除特定位置节点、插入删除多个节点、多个链表拼接等复杂操作。
(6)消息管理模块
本框架消息管理机制,是按照每个线程/任务,具有自身独用的一条消息队列,其他
线程给本线程发送消息时,消息管理模块,即将该消息挂载到本线程的消息队列下,本线程/任务在线程执行函数中,定期轮询检测自身消息队列内是否有消息,若有按照先进先出方式,接收后予以处理。多线程同步问题,使用互斥锁解决。
(7)线程池管理模块
用户在做通信软件开发时常用到多线程并发操作。业务设计方面,需先做好线程设
计和划分,划分好线程后,即可按设计思路,初始化框架中的线程池模块,包括线程是否启动标识位(一些测试线程,在发布时无需启动),线程/任务名称、线程运行函数、线程启动时间、线程启动参数,对于不常用的参数,另行提供接口供用户做操作设置,如设置线程使用的堆栈大小,一般的按默认大小启动即可。如下为某程序线程池参数:
/*是否使用--任务ID--任务字符串名—线程/任务入口函数--启动时间(ms)--启动参数*/
T_TaskCfgItemg_atTaskTable[MAX_TASK_NUM]=
{
{IN_USED,TIMER_TASK,TIMER_TASK_NAME,timer_thread_running,30,NULL},//定时器模块的任务
{IN_USED,UART_RECV_TASK,UART_RECV_TASK_NAME,uart_recv_running,40,NULL},//串口接收线程
{IN_USED,UART_SEND_TASK,UART_SEND_TASK_NAME,uart_send_running,50,NULL},//串口发送线程
{IN_USED,SNTP_SERVER_TASK,SNTP_SERVER_TASK_NAME,sntp_server_running,60,NULL},//SNTP服务线程
{IN_USED,UDP_PKT_TASK,UDP_PKT_TASK_NAME,udp_thread_running,70,NULL},//UDP报处理线程
};
(8)线程自启动模块
线程自启动模块,一般各框架模块初始化完成后,主线程进入空转前执行。该模块
轮询线程池结构,按照是否启动运行的标志位,以及时间顺序,按序按要求启动设计好的各个用户线程,用户只需从各线程入口函数开始编码,写好自身线程的初始化与运行函数即可。线程自启动模块逻辑框图如图3所示。
对于本软件快速开发框架的使用,一般包含以下步骤,实施过程示意图,可参见图4:
步骤1:根据项目需要,设计好自身项目所需的配置项,按键值格式写好配置文件和程序内配置结构体。
步骤2:根据项目实际情况,做好线程划分工作,设计好线程间交互数据,即各种消息的消息名和数据定义,写好用户自身业务各线程的线程初始化、线程循环。
线程初始化一般包括该线程所需的数据初始化、通信接口打开和初始化等。线程循环,是指线程正常运行后,周而复始执行的周期性操作,一般包括调用消息管理模块接口收消息(若有其他线程会给该线程发消息)、通信接口数据周期性接收,如网口、串口数据接收。更上层的即是各种消息的处理和接口上通信数据的处理。
本快速开发框架,基本完成了外围常见操作,大大缩减开发周期,而用户只需专注于上层各种消息处理、通信接口数据处理接口。
接下来,用户从main()函数开始着手,开始调用一系列快速开发框架接口,快速开发框架负责用户设计的线程的调度,整个通信软件即可自动化的完成运转运行。
步骤3:用户开始使用快速开发框架,完成程序开发。第一步,程序启动初期,调用配置文件读写模块接口,读取整个配置文件信息,到程序设计的结构体中,后面多个步骤中,可能会用到该配置信息,所以此步骤优先调用。
步骤4:调用分级打印模块接口,设置打印输出文件。此过程一般会用到配置项信息,即可将打印的文件名,放在配置文件中,随后按指定方式打开此输出文件,并初始化其他一些必备数据。
步骤5:调用分级打印模块接口,设置程序的输出打印级别,这个可以根据当前程序的使用情况,如若是程序调试阶段,可打开调试打印级别,即可看到开发者设置的许多调试打印信息;如若是设备最终的部署运行,可仅打开错误打印和告警打印信息,以供维护人员更直观的掌握设备运行情况。
步骤6:调用日志长时间保存模块接口,使程序日志可永久保存,每一个程序日志文件,有最大字节数要求,且都按时间信息命名,有利于回溯管理。调用该接口,需要日志长期保存的目录名、多久保存一次、每个文件最大字节数等信息(或采用程序内默认设置信息),这些信息一般可保存在配置文件中,由步骤3读入程序内。
步骤7:调用定时器模块接口,完成定时器模块初始化。该接口实现了定时器管理结构的初始化、定时器链表的初始化等操作。
步骤8:调用消息管理模块接口,完成消息管理模块初始化,以便后续各业务线程启动后,完成线程间消息通信交互。
步骤9:调用线程池管理模块接口,完成线程池模块数据的初始化和设置,用户可根据需要,设置每个业务线程的入口函数、线程启动时间、线程启动参数、是否需要启动等信息。
步骤10:调用线程自启动模块接口,完成定时器线程、用户设计的各个业务线程的自动化的启动和运行。具体自启动的实现过程,参见线程自启动模块的描述。
步骤11:写一个while(1)循环,循环内调用sleep或者usleep等函数,让主线程开始空转即可。
按照上述11步,即可轻松完成一个通信软件的开发,用户使用本快速开发框架,只需可将主要精力放在步骤2,即用户自身的业务线程运行的开发上,实现了业务线程开发,使用本框架结构,即可迅速完成整个软件框架的搭建,用户线程由本框架自动调度。
本发明未涉及部分均与现有技术相同或可采用现有技术加以实现。

Claims (6)

1.一种基于Linux平台的通信软件的快速开发框架,其特征在于:包括公共支撑库和多线程开发框架,所述公共支撑库包括配置文件读写模块、分级打印模块、日志长时间保存模块、定时器管理模块和通用链表模块,所述多线程开发框架包括消息管理模块、线程池管理模块、线程自启动模块;
所述配置文件读写模块,用于实现配置文件读写功能,并封装成易使用的接口函数,模块内部使用文件读写、字符串处理、数字字符类型转换函数实现,供开发者调用;
所述分级打印模块,用于在日志打印时,按打印级别区分和控制日志输出;
所述日志长时间保存模块,用于保证软件运行状态可追溯,其依据时间和空间两条线,转存程序日志;
所述定时器管理模块,用于定时器管理,包括定时器管理结构初始化、定时器模块销毁、定时器设置、循环定时器设置、定时器中止和定时器轮询操作,实现精度达10ms以内的定时器操作;
所述通用链表模块,用于提供一套通用链表接口,供开发者使用;
所述消息管理模块,按照每个线程/任务,具有自身独用的一条消息队列,当其他线程给本线程发送消息时,即将该消息挂载到本线程的消息队列下,本线程/任务在线程执行函数中,定期轮询检测自身消息队列内是否有消息,若有则按照先进先出方式,接收后予以处理;
所述线程池管理模块,用于线程设计和划分,其包括线程是否启动标识位,线程/任务名称、线程运行函数、线程启动时间和线程启动参数;
所述线程自启动模块,该模块轮询线程池结构,按照是否启动运行的标志位,以及时间顺序,按序按要求启动设计好的各个用户线程。
2.根据权利要求1所述的一种基于Linux平台的通信软件的快速开发框架,其特征在于:所述配置文件读写模块中配置项,以键值格式定义,以分号结束;配置文件支持多种注释方式,支持键值左右的空格符自动识别。
3.根据权利要求1所述的一种基于Linux平台的通信软件的快速开发框架,其特征在于:所述分级打印模块提供8种打印级别,可随时修改打印级别,且各打印级别可任意组合输出。
4.根据权利要求1所述的一种基于Linux平台的通信软件的快速开发框架,其特征在于:所述日志长时间保存模块依据时间和存储空间两条线,转存程序日志,当时间上满足一定条件时,将日志转存至另一文件夹内,并以时间信息命名该日志文件,同时定期检测当前打印的日志文件大小,若超过一定大小,则转存一次日志文件,在日志转存时,检测日志保存目录的总大小,若超过一定大小,则覆盖最早的文件空间,不分配新的存储空间。
5.根据权利要求1所述的一种基于Linux平台的通信软件的快速开发框架,其特征在于:所述定时器管理模块的内部采用互斥锁方式,满足多线程同时操作使用,其定时方式是将用户定时的时间,全部转化为系统tick计数,按超时顺序,按序管理定时器链表,通过快节奏的定期轮询方式,查看当前有哪些定时器超时,并发送超时消息。
6.一种基于权利要求1中开发框架的使用方法,其特征在于包括如下步骤:
步骤1:设计好自身项目所需的配置项,按键值格式写好配置文件和程序内配置结构体;
步骤2:做好线程划分工作,设计好线程间交互数据,即各种消息的消息名和数据定义,写好用户自身业务各线程的线程初始化、线程循环;
步骤3:开始使用快速开发框架,完成程序开发;首先程序启动初期,调用配置文件读写模块接口,读取整个配置文件信息,到程序设计的结构体中;
步骤4:调用分级打印模块接口,设置打印输出文件;
步骤5:调用分级打印模块接口,设置程序的输出打印级别,
步骤6:调用日志长时间保存模块接口,使程序日志可永久保存,每一个程序日志文件,有最大字节数要求,且都按时间信息命名,以利于回溯管理;
步骤7:调用定时器模块接口,完成定时器模块初始化;
步骤8:调用消息管理模块接口,完成消息管理模块初始化,以便后续各业务线程启动后,完成线程间消息通信交互;
步骤9:调用线程池管理模块接口,完成线程池模块数据的初始化和设置;
步骤10:调用线程自启动模块接口,完成定时器线程、用户设计的各个业务线程的自动化的启动和运行;
步骤11:写一个while(1)循环,循环内调用sleep或者usleep函数,让主线程开始空转。
CN201510952542.3A 2015-12-18 2015-12-18 基于Linux平台的通信软件的快速开发框架及其使用方法 Active CN105607904B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510952542.3A CN105607904B (zh) 2015-12-18 2015-12-18 基于Linux平台的通信软件的快速开发框架及其使用方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510952542.3A CN105607904B (zh) 2015-12-18 2015-12-18 基于Linux平台的通信软件的快速开发框架及其使用方法

Publications (2)

Publication Number Publication Date
CN105607904A true CN105607904A (zh) 2016-05-25
CN105607904B CN105607904B (zh) 2019-04-16

Family

ID=55987858

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510952542.3A Active CN105607904B (zh) 2015-12-18 2015-12-18 基于Linux平台的通信软件的快速开发框架及其使用方法

Country Status (1)

Country Link
CN (1) CN105607904B (zh)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107995524A (zh) * 2017-12-07 2018-05-04 郑州云海信息技术有限公司 一种连接网络视频服务器的客户端系统及其设计、数据处理方法
CN108762940A (zh) * 2018-04-12 2018-11-06 武汉斗鱼网络科技有限公司 多线程访问方法及装置
CN108984160A (zh) * 2018-06-21 2018-12-11 中国石油集团安全环保技术研究院有限公司 基于组件化的信息化快速开发框架及方法
CN109189580A (zh) * 2018-09-17 2019-01-11 武汉虹旭信息技术有限责任公司 一种基于多核平台的多任务开发模型及其方法
CN109783142A (zh) * 2018-12-21 2019-05-21 福建新大陆支付技术有限公司 一种基于pos机的多线程同步方法及pos机
CN113542249A (zh) * 2021-07-08 2021-10-22 昆明学院 一种多协议数据发布系统

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1490724A (zh) * 2002-10-18 2004-04-21 上海贝尔有限公司 一种用于嵌入式系统软件开发的虚拟机装置
US20060136914A1 (en) * 2004-11-30 2006-06-22 Metreos Corporation Application server system and method
CN102779047A (zh) * 2012-07-09 2012-11-14 哈尔滨工程大学 一种嵌入式软件支撑平台
CN102968311A (zh) * 2012-12-13 2013-03-13 中国航空无线电电子研究所 机载嵌入式软件开发平台

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1490724A (zh) * 2002-10-18 2004-04-21 上海贝尔有限公司 一种用于嵌入式系统软件开发的虚拟机装置
US20060136914A1 (en) * 2004-11-30 2006-06-22 Metreos Corporation Application server system and method
CN102779047A (zh) * 2012-07-09 2012-11-14 哈尔滨工程大学 一种嵌入式软件支撑平台
CN102968311A (zh) * 2012-12-13 2013-03-13 中国航空无线电电子研究所 机载嵌入式软件开发平台

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107995524A (zh) * 2017-12-07 2018-05-04 郑州云海信息技术有限公司 一种连接网络视频服务器的客户端系统及其设计、数据处理方法
CN108762940A (zh) * 2018-04-12 2018-11-06 武汉斗鱼网络科技有限公司 多线程访问方法及装置
CN108762940B (zh) * 2018-04-12 2020-09-04 武汉斗鱼网络科技有限公司 多线程访问方法及装置
CN108984160A (zh) * 2018-06-21 2018-12-11 中国石油集团安全环保技术研究院有限公司 基于组件化的信息化快速开发框架及方法
CN108984160B (zh) * 2018-06-21 2022-04-22 中国石油集团安全环保技术研究院有限公司 基于组件化的信息化快速开发框架系统
CN109189580A (zh) * 2018-09-17 2019-01-11 武汉虹旭信息技术有限责任公司 一种基于多核平台的多任务开发模型及其方法
CN109783142A (zh) * 2018-12-21 2019-05-21 福建新大陆支付技术有限公司 一种基于pos机的多线程同步方法及pos机
CN113542249A (zh) * 2021-07-08 2021-10-22 昆明学院 一种多协议数据发布系统

Also Published As

Publication number Publication date
CN105607904B (zh) 2019-04-16

Similar Documents

Publication Publication Date Title
CN105607904A (zh) 基于Linux平台的通信软件的快速开发框架及使用方法
CN105446806B (zh) 一种应用程序无响应的处理方法及装置
WO2018072493A1 (zh) 编译方法和编译系统
US20100223446A1 (en) Contextual tracing
CN101271415B (zh) 嵌入式设备中监控看门狗的实现方法
US8707274B2 (en) System and method for information extraction from within an active application during execution
CN107171825A (zh) 一种终端的重复日志过滤方法
CN106201672A (zh) 一种定时任务设置系统及其定时任务运行方法
CN103428051A (zh) 一种通信设备的测试系统及方法
CN107992407A (zh) 使用u盘对安卓终端设备调试的系统及方法
CN101719852B (zh) 一种中间件性能的监控方法和设备
CN105635298A (zh) 一种基于业务隔离原理的数据采集设备统一接入系统
CN103117895A (zh) 一种lxi仪器的服务监听方法
CN102855188A (zh) 基于Android的系统压力测试方法
CN101267623A (zh) 一种手机启动引导的构建方法
CN112131087B (zh) 一种模拟软件通信层与业务应用层解耦系统及实现方法
CN112398079A (zh) 智能化继电保护定值修改与核对系统及方法
CN108199867B (zh) 一种有线传感器网络的组网方法
CN106790403A (zh) 实现移动云计算中间平台的方法及实现分布式的方法
CN114741400A (zh) 一种数据同步及解析方法、装置及终端设备
CN110231931A (zh) 一种电源实时控制模块和系统
CN112153114A (zh) 一种分时访问共享器件的方法、系统、设备及介质
US20090327995A1 (en) Annotation-aided code generation in library-based replay
CN113688009B (zh) 一种云平台的云主机监控数据采集方法、系统及设备
WO2020073200A1 (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
GR01 Patent grant
GR01 Patent grant