多线程技术在NGN中的应用

2013-03-01 10:51付承彪
科技视界 2013年35期
关键词:曲靖缓冲区线程

付承彪

(曲靖师范学院 计算机科学与工程学院,云南 曲靖655011)

0 引言

近年来,随着IP网络的飞速发展,基于IP承载网络的下一代网络(NGN)已被业界广泛认可。NGN网络基于软交换技术[1],因为它具有开放的体系架构,高效的扩展性和灵活性[2],并能提供给用户更加个性化的服务,在整个通信网络中得到了广泛的应用。

1 多线程技术简介

我们如果把一个正在运行的软件看做一个进程,就像一个大的管道,这个管道不运送什么东西,但里面有很多个小的管道,每个小管负责的东西不同,而这些小管道就可以看做是一个个线程[3]。如果运行的是一个单线程的程序的话,而这个线程需要连续运行几个功能时,如果正在运行的那个功能因碰到一个等待或者睡眠的指令的话,他就会停在那里不做任何事,此是这个CPU就空闲在那里,同时还会等待知道程序重新继续运行。如果使用多线程技术,那么可以把这几个功能同时(并不是绝对意义上的同时)运行,当其中一个功能遇到睡眠指令的时候,其他没有睡眠的继续运行,这个可以花更短的时间,让CPU更充分的被利用来完成需要的事情,线程通常共享一个代码区,但有各自独立的数据存储区。

2 多线程技术的设计

线程总是在某个进程环境中创建的,而且它的整个寿命期都在进程中。进程是不活泼的,从来不执行任何东西,它只是线程的容器。线程用于描述进程中的运行路径,每当进程创建时,系统就要创建一个主线程[4]。多线程的设计在NGN网络测试仪中最重要的是能够实现多项任务的“同时”进行,以至多个客户可以同时进行读操作,而不会彼此影响。

本软件将采取多线程的结构:除主线程外,主要的辅助线程有:数据读取线程、文件保存线程、粗解码线程和CDR合成线程。

主线程负责与用户交互,包括软件的启动、中止、响应用户输入、显示界面显示和刷新等。主线程具有调度其它辅助线程的作用。

数据读取线程负责从硬件接收数据,为了在高速率时不丢包,这个线程被设置为一个高优先级的线程。该线程的作用是响应硬件驱动的消息,从硬件读取信令消息数据,把接收到的消息数据以一定的格式存放到数据缓冲区中,该缓冲直接映射到硬盘文件上面。

粗解码线程为数据缓冲区中的新消息,建立消息索引,并进行粗解码和呼叫合成。处理完一条消息后,此线程向主线程发送界面显示或刷新消息,接着处理下一条新消息(如果有消息)。粗解码结果存放在粗解码结果缓冲区或文件中。

文件保存线程负责把数据保存在文件,后台把消息缓冲区中的原始消息数据存储在磁盘上,用于减少内存消耗,而且用于将来的离线分析。拟采取的方法如下:在内存中分配一个足够大的缓冲区,用来防止消息到来速度过快造成的消息缓冲区溢出;另一方面,当消息缓冲区的占用超过一定比例时,就将数据缓冲区的内容保存至硬盘数据文件,腾出所占内存空间,此过程由数据存盘线程在后台完成。整个软件的多线程体系结构如图1所示:

图1 多线程体系结构

实时采集的情况和离线回放的情况有较大不同,在离线的情况下,数据不用进行读取线程,而是存储在存储设备中,通过文件映射将数据直接映射到数据缓冲区中。

在创建了多个线程后,对资源访问的冲突问题也随之产生。从上图1中可以看到数据读取线程、粗解码线程、存盘线程都会访问存放原始数据的缓存;合成线程和CDR信息存盘线程会同时访问CDR信息缓存等。

线程需要下面两种情况下相互进行通信:

(1)当有多个线程访问共享资源而不使资源被破坏;

(2)当一个线程需要将某个任务已经完成的情况通知另外一个或多个线程;

为了达到上述要求,需要建立一种机制,即线程同步,来避免对资源访问的冲突,令一个线程能在一定时间独占某一资源进行访问,限制其他线程在这段时间对同一资源的访问权。

在一些极端情况下,如果数据到达速率很高,远大于粗解码速率,即粗解码线程需要对已存盘的数据文件进行操作,必须定义并保存好粗解码消息。

3 结论

本文首先概述了多线程技术,然后在分析NGN中多线程技术的基础上,给出了NGN网络中的多线程应用。本文所阐述的多线程技术,在NGN现网中的应用有一定的现实意义。

[1]付承彪,蔡昌许,陶燕林.H.248协议在NGN网络中的应用分析[J].曲靖师范学院学报,2013,32(06):48-51.

[2]代孝东,陈文星.基于SIP和H.248协议的混合软交换技术的研究[J].计算机科学,2011,38(10A):336-337转352.

[3]田安红,付承彪,李丽.基于Socket的网络通信过程的研究[J].曲靖师范学院,2013,32(06):45-47.

[4]董浩,张玲.软交换核心网的安全解决方案研究[J].山西电子技术,2013(01):69-71.

猜你喜欢
曲靖缓冲区线程
曲靖师范学院“音乐学专业”介绍
曲靖师范学院“社会工作专业”介绍
曲靖时代新装
嫩江重要省界缓冲区水质单因子评价法研究
浅谈linux多线程协作
曲靖方言的语气词“说”
关键链技术缓冲区的确定方法研究
基于上下文定界的Fork/Join并行性的并发程序可达性分析*
Linux线程实现技术研究
地理信息系统绘图缓冲区技术设计与实现