[发明专利]一种实现网络聊天室的方法及服务器有效
申请号: | 201510295670.5 | 申请日: | 2015-06-02 |
公开(公告)号: | CN105007213B | 公开(公告)日: | 2019-04-16 |
发明(设计)人: | 陈正超;周平 | 申请(专利权)人: | 贵阳语玩科技有限公司 |
主分类号: | H04L12/58 | 分类号: | H04L12/58 |
代理公司: | 暂无信息 | 代理人: | 暂无信息 |
地址: | 550022 贵州贵阳国家高新*** | 国省代码: | 贵州;52 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 实现 网络 聊天室 方法 服务器 | ||
本申请公开了一种实现网络聊天室的方法及服务器,所述方法包括:创建多个线程,其中包括至少一个主线程和至少一个服务线程,服务线程服务于网络聊天室的多个聊天房间;运行主线程,接收聊天用户发送的数据包,将接收到的数据包插入到发送用户对应的缓冲器中,其中,每个用户均对应至少一个缓冲器;运行服务线程,轮询服务线程各自服务的多个聊天房间中的聊天用户,从轮询到的聊天用户所对应的缓冲器中提取数据包进行数据处理,将处理后的数据分发给轮询到的用户所在聊天房间中的聊天用户。本申请能够减少服务器的开销,充分利用服务器的CPU资源,使单台服务器能够支撑更多的用户,最大程度的利用服务器的硬件资源,降低服务器的硬件成本。
技术领域
本发明涉及互联网技术领域,尤其涉及一种实现网络聊天室的方法及服务器。
背景技术
随着互联网的发展,网络聊天室已成为一种常见的网络沟通工具,是一个可供多人进行实时交谈、聊天的网络场所。网络聊天室包括视频聊天室、语音聊天室和文字聊天室等。
每个网络聊天室可以分成多个聊天房间,网络用户经过注册后,可以选择进入其中一个聊天房间,可以在聊天房间里面与房间内的其他用户进行网络对话,互相交流信息。
目前的网络聊天室的实现过程是通过服务器将客户端的文字、音频、视频信息等转发到聊天房间的其他客户端。目前对每个房间的数据处理都是由服务线程完成的,并且是为每一个房间配置一个服务线程。这也就意味着服务器上的房间越多,服务线程也就越多,由于服务线程的数量众多,操作系统就需要不停的进行调度以保证每个服务线程都能得到时间使用处理器(CPU)资源来执行代码,调度本身也是需要CPU开销,所以线程数量越多,操作系统在线程调度上的开销也就越大,也会需要更多的线程调度的开销,这样无疑是资源的巨大浪费。
发明内容
本发明要解决的技术问题是提供一种实现网络聊天室的方法及服务器,能够减少服务器的开销,最大的程度的利用服务器资源。
为解决上述技术问题,本申请的一种实现网络聊天室的方法,包括:
创建多个线程,其中包括至少一个主线程和至少一个服务线程,所述服务线程服务于网络聊天室的多个聊天房间;
运行所述主线程,接收聊天用户发送的数据包,将接收到的数据包插入到发送用户对应的缓冲器中,其中,每个用户均对应至少一个缓冲器;
运行所述服务线程,轮询服务线程各自服务的多个聊天房间中的聊天用户,从轮询到的聊天用户所对应的缓冲器中提取数据包进行数据处理,将处理后的数据分发给轮询到的用户所在聊天房间中的聊天用户。
进一步地,所述创建多个线程包括:
创建与服务器的处理器的核数相同数量的线程。
进一步地,所述方法还包括:
对多个线程均需要使用的临界资源设置读文件锁;
在线程需要访问所述临界资源时对所述读文件锁进行抢锁,抢锁成功的线程对所需访问的临界资源进行内存拷贝,然后释放读文件锁,在释放读文件锁后采用拷贝得到的临界资源进行相应操作,其中,所述读文件锁允许多个线程同时访问临界资源。
进一步地,所述方法还包括:
对多个线程均需要使用的临界资源还设置写文件锁;
在线程需要写所述临界资源时对所述写文件锁进行抢锁,抢锁成功的线程对所述临界资源进行写操作,在抢锁成功的线程对所述临界资源进行写操作的过程中禁止其他线程使用所述临界资源。
进一步地,所述方法还包括:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于贵阳语玩科技有限公司,未经贵阳语玩科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201510295670.5/2.html,转载请声明来源钻瓜专利网。
- 上一篇:网络信息处理平台
- 下一篇:一种基于HTTP协议的自动测试方法及系统