阶段3-团队合作\项目-网络安全传输系统\sprint2-线程池技术优化
之前问题的存在,之前只是用一个客户端在与服务器进行连接,当多个客户端进行连接的时候会连接不上处于等待状态,说明以前我们的服务器只能同时处理一个请求,故需要修改
服务器:
单发:初始化--等待客户端连接--处理--关闭这次连接,再次等待下一次连接,它只能处理一个客户端的请求。
并发
初始化--等待连接--在这里处理它不会是主进程进行处理,而是交给子进程或线程进行处理,主进程又快速得等待下一次连接了。
可以同时处理多个客户请求了,我们一般都会去创建线程来处理。
我么可以利用线程池,在它里面已经创建好了一定数量的线程,如果要用直接从里面去获取,用完之后直接回收回来,而不需要每次有一个请求就去创建然后用完之后就删除这些附加的操作,
线程池使用实例
上面是有3个线程的线程池供10个任务来使用
编译的时候一定要带上-lpthread
首先是怎么创建线程池,然后怎么使用线程池
创建线程池
使用函数pthread_create (&(pool->threadid[i]), NULL, thread_routine, NULL)来创建线程。
往线程池中添加任务
销毁线程池
下面利用上面的线程池代码来优化之前的server.c程序
一个线程要去完成一项任务,那么首先找到我们的任务在哪里
。。。。。。看代码
server.c
client.c
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】