一种实现网络聊天室的方法及服务器的制造方法

文档序号:9290016阅读:180来源:国知局
一种实现网络聊天室的方法及服务器的制造方法
【技术领域】
[0001] 本发明涉及互联网技术领域,尤其涉及一种实现网络聊天室的方法及服务器。
【背景技术】
[0002] 随着互联网的发展,网络聊天室已成为一种常见的网络沟通工具,是一个可供多 人进行实时交谈、聊天的网络场所。网络聊天室包括视频聊天室、语音聊天室和文字聊天室 等。
[0003] 每个网络聊天室可以分成多个聊天房间,网络用户经过注册后,可以选择进入其 中一个聊天房间,可以在聊天房间里面与房间内的其他用户进行网络对话,互相交流信息。
[0004] 目前的网络聊天室的实现过程是通过服务器将客户端的文字、音频、视频信息等 转发到聊天房间的其他客户端。目前对每个房间的数据处理都是由服务线程完成的,并且 是为每一个房间配置一个服务线程。这也就意味着服务器上的房间越多,服务线程也就越 多,由于服务线程的数量众多,操作系统就需要不停的进行调度以保证每个服务线程都能 得到时间使用处理器(CPU)资源来执行代码,调度本身也是需要CPU开销,所以线程数量越 多,操作系统在线程调度上的开销也就越大,也会需要更多的线程调度的开销,这样无疑是 资源的巨大浪费。

【发明内容】

[0005] 本发明要解决的技术问题是提供一种实现网络聊天室的方法及服务器,能够减少 服务器的开销,最大的程度的利用服务器资源。
[0006] 为解决上述技术问题,本申请的一种实现网络聊天室的方法,包括:
[0007] 创建多个线程,其中包括至少一个主线程和至少一个服务线程,所述服务线程服 务于网络聊天室的多个聊天房间;
[0008] 运行所述主线程,接收聊天用户发送的数据包,将接收到的数据包插入到发送用 户对应的缓冲器中,其中,每个用户均对应至少一个缓冲器;
[0009] 运行所述服务线程,轮询服务线程各自服务的多个聊天房间中的聊天用户,从轮 询到的聊天用户所对应的缓冲器中提取数据包进行数据处理,将处理后的数据分发给轮询 到的用户所在聊天房间中的聊天用户。
[0010] 进一步地,所述创建多个线程包括:
[0011] 创建与服务器的处理器的核数相同数量的线程。
[0012] 进一步地,所述方法还包括:
[0013] 对多个线程均需要使用的临界资源设置读文件锁;
[0014] 在线程需要访问所述临界资源时对所述读文件锁进行抢锁,抢锁成功的线程对所 需访问的临界资源进行内存拷贝,然后释放读文件锁,在释放读文件锁后采用拷贝得到的 临界资源进行相应操作,其中,所述读文件锁允许多个线程同时访问临界资源。
[0015] 进一步地,所述方法还包括:
[0016] 对多个线程均需要使用的临界资源还设置写文件锁;
[0017] 在线程需要写所述临界资源时对所述写文件锁进行抢锁,抢锁成功的线程对所述 临界资源进行写操作,在抢锁成功的线程对所述临界资源进行写操作的过程中禁止其他线 程使用所述临界资源。
[0018] 进一步地,所述方法还包括:
[0019] 所述网络聊天室为语音聊天室,在新创建语音聊天房间时,计算每个服务线程的 负荷,将新创建的语音聊天房间分配给负荷最小的服务线程,采用负荷=发言用户数量+ 旁听用户数量/开销等效参数,计算服务线程的负荷,其中,所述发言用户数量为服务线程 所服务的全部聊天房间中的发言用户的总数量,所述旁听用户数量为服务线程所服务的全 部聊天房间中的旁听用户的总数量,所述开销等效参数为旁听用户所占开销与发言用户所 占开销的等效值。
[0020] 进一步地一种服务器,包括:线程创建单元、主线程运行单元和服务线程运行单 元,其中:
[0021] 所述线程创建单元,用于创建多个线程,其中包括至少一个主线程和至少一个服 务线程,所述服务线程服务于网络聊天室的多个聊天房间;
[0022] 所述主线程运行单元,用于运行所述主线程,接收聊天用户发送的数据包,将接收 到的数据包插入到发送用户对应的缓冲器中,其中,每个用户均对应至少一个缓冲器;
[0023] 所述服务线程运行单元,用于运行所述服务线程,轮询服务线程各自服务的多个 聊天房间中的聊天用户,从轮询到的聊天用户所对应的缓冲器中提取数据包进行数据处 理,将处理后得到的数据分发给轮询到的用户所在聊天房间中的聊天用户。
[0024] 进一步地,所述线程创建单元创建多个线程包括:
[0025] 创建与服务器的处理器的核数相同数量的线程。
[0026] 进一步地,还包括文件锁单元,其中:
[0027] 所述文件锁单元,用于对多个线程均需要使用的临界资源设置读文件锁;
[0028] 所述主线程运行单元和服务线程运行单元,还用于在线程需要访问所述临界资源 时对所述读文件锁进行抢锁,抢锁成功的线程对所需访问的临界资源进行内存拷贝,然后 释放读文件锁,在释放读文件锁后采用拷贝得到的临界资源进行相应操作,其中,所述读文 件锁允许多个线程同时访问临界资源。
[0029] 进一步地所述文件锁单元,还用于对多个线程均需要使用的临界资源设置写文件 锁;
[0030] 所述主线程运行单元和服务线程运行单元,还用于在线程需要写所述临界资源时 对所述写文件锁进行抢锁,抢锁成功的线程对所述临界资源进行写操作,在抢锁成功的线 程对所述临界资源进行写操作的过程中禁止其他线程使用所述临界资源。
[0031] 进一步地还包括线程控制单元,其中:
[0032] 所述线程控制单元,用于在所述网络聊天室为语音聊天室,在新创建语音聊天房 间时,计算每个服务线程的负荷,将新创建的语音聊天房间分配给负荷最小的服务线程,采 用负荷=发言用户数量+旁听用户数量/开销等效参数,计算服务线程的负荷,其中,所述 发言用户数量为服务线程所服务的全部聊天房间中的发言用户的总数量,所述旁听用户数 量为服务线程所服务的全部聊天房间中的旁听用户的总数量,所述开销等效参数为旁听用 户所占开销与发言用户所占开销的等效值。
[0033] 综上所述,本申请能够减少服务器的开销,充分利用服务器的CPU资源,使单台服 务器能够支撑更多的用户,最大程度的利用服务器的硬件资源,降低服务器的硬件成本。
【附图说明】
[0034] 图1为本申请的实现网络聊天室的方法的流程图;
[0035] 图2为本申请的实现网络聊天室的服务器。
【具体实施方式】
[0036] 下文中将参考附图并结合实施例来详细说明本发明。需要说明的是,在不冲突的 情况下,本申请中的实施例及实施例中的特征可以相互组合。
[0037] 如图1所示,本申请的实现网络聊天室的方法,包括:
[0038] 步骤101 :创建多个线程,其中包括至少一个主线程和至少一个服务线程,服务线 程服务于网络聊天室的多个聊天房间;
[0039] 本申请中创建的线程包括主线程和服务线程。
[0040] 主线程的数量为一个或多个
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1