5.3.1 多线程设计

  服务器设计以多线程方式工作,以接受多个客户端的算数运算请求。

q      建立一个用于接受客户端请求线程,等待客户端的连接。

q      为每一个接受的客户端都建立一个接收数据线程和一个发送数据线程。当接收线程收到数据后,先计算算数表达式的结果,然后使用事件通知发送数据线程。发送数据接收到事件后,将计算结果发送数据给客户端。

q      建立一个资源清理线程,用于及时对服务器的资源进行清理。当客户端的套接字关闭之后,需要清理为该客户端创建的线程和分配的内存空间。

q      服务器的主线程用于接收用户的输入和显示信息。

q      服务器仅显示启动和退出的界面。在子线程中完成对客户端数据的处理,不在服务器界面上显示客户端的数据。

q      所有子线程都必须自动退出,不调用线程结束函数。在所有子线程都退出后,主线程最后退出。

1.服务器启动

如图5.5所示,服务器启动时的线程时序图。服务器启动时,创建清理资源线程和接受客户端请求线程。当接受客户端请求线程收到一个客户端的请求后,为该客户端创建一个接收数据线程和一个发送数据线程。

2.服务器退出

当关闭服务器时,服务器向清理资源线程和接受客户端请求接程,发送线程退出信号。接受客户端请求线程自动退出。

清理资源线程向所有正在于客户端进行通讯的接收和发送数据线程,发送服务器退出消息,使这些线程自动退出。当这些线程退出后,清理资源线程再向主线程发送消息,然后该线程退出。主线程在接收到清理资源线程发送的消息后,最后退出。

3.客户端退出

如图所示,服务器在某个客户端结束请求时的线程时序图。当接收数据线程获知客户端结束请求时,向该线程的发送数据线程发送消息使其退出,然后该线程退出线程。同时清理资源线程清理该线程的占用资源。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值