高性能服务器编程-线程池

来源:互联网 发布:mac 8081端口被占用 编辑:程序博客网 时间:2024/05/17 06:20

之前介绍了两种高性能服务器编程,今天介绍第三种-线程池。

一、概念

1、为什么要有池?

  多线程如果存在客户端链接,创建一个函数线程,客户端关闭,释放线程,服务器大多时间消耗在创建线程,释放线程。这样对于业务的处理时间就会大大减少,所以引入了池来解决问题。

2、池:初始时,申请比刚开始要使用的资源大的多的资源空间,接下来使用时,直接从池中获取资源。

3、线程池:在服务器运行开始时,创建N个线程,将这N个线程用池管理起来,当有用户链接时,从线程池中选取一个线程为其服务,客户端关闭链接后,服务器又将该线程放回到线程池中,线程池中的所有线程到最后一起处理。

二、线程池的实现

1、示例

(1)主线程先创建3条函数线程

(2)主线程等待客户链接,3条函数线程执行P操作二阻塞运行

(3)主线程接收客户链接后,通过信号量的V操作通知一个函数线程和客户端进行通信

2、主线程如何将获得的文件描述符传递给函数线程?

  全局数组作为等待函数线程处理的文件描述符的等待队列

3、原理

4、源代码

(1)服务器

(2)客户端

5、测试

(1)客户端

如下图所示,共创建了三个函数线程

(2)服务器

在服务器端显示的结果可以明显看出是有三个客户端,分别是4 、5 、6


阅读全文
0 0
原创粉丝点击