linux多进程,多线程编程以及并发服务器的多进程和多线程实现

socket服务器编程:

顾名思义就是使用socket套接字来编写服务器程序的过程。不熟悉socket编程的小伙伴可以看我之前的文章,但是当时所实现的功能服务器同时只能和一个客户端进行交互,效率太低,利用多进程或者多线程方式来实现服务器可以做到同时和多个客户端进行交互。提高服务器的性能

多进程的实现方式:

我们可以在程序中使用fork系统调用来创建一个子进程父进程负责接收客户端的连接,并从监听队列中取出已经连接成功的一个客户端套接字,传给子进程,子进程来负责处理和唯一的一个客户端的交互。当我们将上面这个过程实现在一个while循环中时,父进程循环接收,循环创建子进程,每个子进程都可以处理一个客户端的请求,这样我们就可以同时和多个客户端进行交互。

原理:这里我们使用了fork系统调用的一个性质------->父子进程会共享fork之前创建的文件描述符。子进程创建出来之后,会将父进程的PCB结构复制一份,文件描述符也就会被复制过来,而父子进程的两个文件描述符,指向了同一个struct_file的结构体,在这个结构体中,有一个count属性,专门用来记录指向该结构体的文件描述符个数。

当count的值是0时,该结构体被释放,子进程创建出来

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值