一种基于共享内存的通信方法、装置和设备制造方法及图纸

技术编号:26790528 阅读:28 留言:0更新日期:2020-12-22 17:05
本发明专利技术涉及一种基于共享内存的通信方法,包括客户端线程将客户端线程信号量写入环形缓冲区,发起连接请求,所述客户端线程通过所述信号量将自身挂起;任务管理中心读取所述环形缓冲区,得到所述客户端线程的连接请求,创建服务端信号量,将所述客户端线程信号量和所述服务端信号量的映射关系保存至映射关系表;任务管理中心通过所述客户端线程信号量,唤醒所述客户端线程。本发明专利技术提升客户端和服务端的通信效率。本发明专利技术还涉及一种基于共享内存的通信装置和设备。

【技术实现步骤摘要】
一种基于共享内存的通信方法、装置和设备
本专利技术涉及计算机
,尤其涉及一种基于共享内存的通信方法、装置和设备。
技术介绍
在一对多的通信模型中,通常客户端和服务端部署在不同的设备上,设备之间通过网线连接,其通信方式只能采用Socket通信。在Socket通信时,由于复杂的网络环境,Socket通信需要组装解析复杂的网络报头、同时对报文进行确认、对数据进行CRC校验等。但当客户端和服务端都部署在同一台设备上,它们之间的通信方式为进程间的通信,进程间的通信是在同一台设备上的内存信息交换,如何建立高效的通信方案是目前需要解决的技术问题。
技术实现思路
本专利技术所要解决的技术问题是针对现有技术的不足,提供一种基于共享内存的通信方法、系统和设备。本专利技术解决上述技术问题的技术方案如下:一种基于共享内存的通信方法,包括:客户端线程将客户端线程信号量写入环形缓冲区,发起连接请求,所述客户端线程通过所述信号量将自身挂起;任务管理中心读取所述环形缓冲区,得到所述客户端线程的连接请求,创建服务端信号量本文档来自技高网...

【技术保护点】
1.一种基于共享内存的通信方法,其特征在于,包括:/n客户端线程将客户端线程信号量写入环形缓冲区,发起连接请求,所述客户端线程通过所述信号量将自身挂起;/n任务管理中心读取所述环形缓冲区,得到所述客户端线程的连接请求,创建服务端信号量,将所述客户端线程信号量和所述服务端信号量的映射关系保存至映射关系表;/n任务管理中心通过所述客户端线程信号量,唤醒所述客户端线程;/n客户端线程将第一写任务信息写入所述环形缓冲区,所述第一写任务中信息中包括所述客户端线程信号量和任务类型,所述客户端线程通过所述客户端线程信号量将自身挂起,任务管理中心读取所述环形缓冲区得到所述第一写任务信息,并将所述第一写任务信息...

【技术特征摘要】
1.一种基于共享内存的通信方法,其特征在于,包括:
客户端线程将客户端线程信号量写入环形缓冲区,发起连接请求,所述客户端线程通过所述信号量将自身挂起;
任务管理中心读取所述环形缓冲区,得到所述客户端线程的连接请求,创建服务端信号量,将所述客户端线程信号量和所述服务端信号量的映射关系保存至映射关系表;
任务管理中心通过所述客户端线程信号量,唤醒所述客户端线程;
客户端线程将第一写任务信息写入所述环形缓冲区,所述第一写任务中信息中包括所述客户端线程信号量和任务类型,所述客户端线程通过所述客户端线程信号量将自身挂起,任务管理中心读取所述环形缓冲区得到所述第一写任务信息,并将所述第一写任务信息放入任务队列中;
当所述任务管理中心处理所述任务队列得到所述第一写任务信息时,查找空闲缓冲区队列得到空闲缓冲区编号,并将所述空闲缓冲区编号写入所述客户端线程在任务管理中心对应的写队列中,将所述空闲缓冲区编号封装为所述客户端线程持有的信号量集中预设的索引值,根据所述客户端线程信号量将所述客户端唤醒;
所述客户端线程将数据信息写入所述空闲缓冲区编号对应的空闲缓冲区后,向所述环形缓冲区注册第一请求任务,所述任务管理中心从所述环形缓冲区中读取所述第一请求任务信息,将所述第一请求任务信息放入所述任务队列中;
当所述任务管理中心处理所述任务队列获得所述第一请求任务信息时,根据所述客户端线程信号量查找所述映射连接表,获取对应的服务端信号量,并从服务端线程池中获取一个空闲服务线程与所述服务端信号量绑定,将所述空闲缓冲区编号放入所述服务端线程在任务管理中心对应的读队列中,并启动所述服务端线程;
所述服务端线程通过所述任务管理中心和所述空闲缓冲区读取所述数据信息。


2.根据权利要求1所述的基于共享内存的通信方法,其特征在于,所述服务端线程通过所述任务管理中心和所述空闲缓冲区读取所述数据信息,具体包括:
所述服务端线程将与所述服务端线程信号量及任务类型写入所述环形缓冲区,注册第一读任务,并通过所述服务端线程信号量将自身挂起;
所述任务管理中心从所述环形缓冲区中读取所述第一读任务信息,将所述第一读任务信息放入所述任务队列中,当所述任务管理中心从所述任务队列中读取到所述第一读任务信息时,将所述空闲缓冲区编号封装为服务端线程绑定的信号量集中预设的索引的值后,根据所述服务端线程信号量将所述服务端线程唤醒;
所述服务端线程读取所述空闲缓冲区中的数据信息,并向所述环形缓冲区中注册第一读完成任务;
所述任务管理中心从所述环形缓冲区中读取所述第一读完成任务信息时,释放对应的缓冲区编号。


3.根据权利要求2所述的基于共享内存的通信方法,其特征在于,所述任务管理中心从所述环形缓冲区中读取所述第一读完成任务信息时,释放对应的缓冲区编号,具体包括:
所述任务管理中心从所述环形缓冲区中读取所述第一读完成任务信息,将所述第一读完成任务信息放入所述任务队列中;
当所述任务管理中心处理所述任务队列时,得到所述读完成任务信息时,将所述缓冲区编号重新放入空闲队列中。


4.根据权利要求1所述的基于共享内存的通信方法,其特征在于,所述方法还包括:
服务端线程向环形缓冲区注册第二写任务后,将自身挂起,任务管理中心读取所述环形缓冲区得到所述第二写任务信息,并将所述第二写任务信息放入所述任务队列中;
当所述任务管理中心处理所述任务队列获得所述第二写任务信息时,查找空闲缓冲区队列得到空闲缓冲区编号,并将所述空闲缓冲区编号写入所述服务端线程的写队列中,将所述空闲缓冲区编号封装为服务端线程绑定的信号量集中预设的索引的值后,根据所述服务端线程信号量将所述服务端线程唤醒;
所述服务端线程将数据信息写入所述空闲缓冲区后,向所述环形缓冲区注册第二请求任务,所述任务管理中心从所述环形缓冲区中读取所述第二请求任务信息,并将所述第二请求任务信息放入所述任务队列中;
当所述任务管理中心处理所述任务队列获得所述第二请求任务信息时,查找映射连接表,得到与所述服务端线程对应的客户端线程的信号量,将所述空闲缓冲区编号放入所述客户端线程在任务管理中心对应的读队列中,并根据...

【专利技术属性】
技术研发人员:王敏郝斌鲁迎迎
申请(专利权)人:深圳花儿数据技术有限公司
类型:发明
国别省市:广东;44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1