服务器线程管理与安全通信优化
35、可支持的客户端数量受服务器线程参数数组的限制。修改程序,使其不存在这种限制。你需要创建一个数据结构,该结构允许你添加和删除线程参数,并且还需要能够扫描该结构以查找已终止的服务器线程。另一种可以说更简单的方法是,让每个服务器线程管理自己的状态,除了要求服务器线程关闭并等待它们完成之外,主线程不参与其中。
解决客户端数量受服务器线程参数数组限制的问题
要解决客户端数量受服务器线程参数数组限制的问题,可采用以下两种方法:
-
创建可动态管理线程参数的数据结构
- 使用动态数组、链表等数据结构,实现线程参数的添加和删除功能
- 需要实现对该结构的扫描功能,以便查找已终止的服务器线程 -
由服务器线程自行管理状态
- 每个服务器线程独立管理自身状态
- 主线程仅负责发送关闭请求,并等待服务器线程完成关闭操作
36、改进程序以使用 SSL 进行安全的客户端/服务器通信。
需要先查阅关于 SSL 的知识,然后对相关程序进行修改,使其支持使用 SSL 实现客户端与服务器之间的安全通信。
37、在查询服务状态时,只是简单地打印出数字。对其进行扩展,使状态以更易读的形式呈现。
可通过定义一个映射表,将数字状态码映射为对应的文字描述,在打印服务状态时,根据数字状态码从映射表中查找对应的文字描述并输出。
38、重写代码,使就绪的工作线程数量受信号量限制。使用大型线程池进行实验,以确定这种替代方法的有效性。
可以通过以下步骤实现让就绪工作线程数量受信号量限制:
- 主线程创建一个最大值较小的信号量,该值代表能同时活跃的最大线程数,可设为处理器数量,初始计数也设为最大值,此值可作为参数,经实验调整到最佳。
- 每个工作线程在进入关键代码段前等待信号量,信号量等待可紧接在互斥锁或其他等待操作之前。
- 工作线程离开关键代码段







