之前问题的存在,之前只是用一个客户端在与服务器进行连接,当多个客户端进行连接的时候会连接不上处于等待状态,说明以前我们的服务器只能同时处理一个请求,故需要修改

服务器:

单发:初始化--等待客户端连接--处理--关闭这次连接,再次等待下一次连接,它只能处理一个客户端的请求。

并发

初始化--等待连接--在这里处理它不会是主进程进行处理,而是交给子进程或线程进行处理,主进程又快速得等待下一次连接了。

可以同时处理多个客户请求了,我们一般都会去创建线程来处理。

我么可以利用线程池,在它里面已经创建好了一定数量的线程,如果要用直接从里面去获取,用完之后直接回收回来,而不需要每次有一个请求就去创建然后用完之后就删除这些附加的操作,

线程池使用实例

上面是有3个线程的线程池供10个任务来使用

编译的时候一定要带上-lpthread

首先是怎么创建线程池,然后怎么使用线程池

创建线程池

使用函数pthread_create (&(pool->threadid[i]), NULL, thread_routine, NULL)来创建线程。

往线程池中添加任务

销毁线程池

下面利用上面的线程池代码来优化之前的server.c程序

一个线程要去完成一项任务,那么首先找到我们的任务在哪里

。。。。。。看代码

server.c

client.c

阶段3-团队合作\项目-网络安全传输系统\sprint2-线程池技术优化的更多相关文章

  1. 网络安全传输系统-sprint2线程池技术优化

    part1:线程池工作原理 为满足多客户端可同时登陆的要求,服务器端必须实现并发工作方式.当服务器主进程持续等待客户端连接时,每连接上一个客户端都需一个单独的进程或线程处理客户端的任务.但考虑到多进程 ...

  2. 阶段3-团队合作\项目-网络安全传输系统\sprint1-传输子系统设计\第3课-加密传输优化

    对之前的传输系统进行加密,使之成为加密的网络传输系统 客户端编程模型 通过以上模型对传统的TCP传输模型进行优化 首先完成初始化工作,它是要在创建socket之前完成 主要是以上四个函数的实现,那么这 ...

  3. 阶段3-团队合作\项目-网络安全传输系统\sprint3-账号管理子系统设计\第2课-账号管理子系统设计

    账号管理子系统的设计 客户端需要登录到服务器,在服务器去查询数据库,进行验证该用户. 打开client.c文件 编译之 把它复制到开发板里面去 这个程序是在本地数据库测试的!!!!!!!!!!!!!! ...

  4. 阶段3-团队合作\项目-网络安全传输系统\sprint0-产品规划与设计\第2课-产品功能模型设计

  5. SpringBoot项目框架下ThreadPoolExecutor线程池+Queue缓冲队列实现高并发中进行下单业务

    主要是自己在项目中(中小型项目) 有支付下单业务(只是办理VIP,没有涉及到商品库存),目前用户量还没有上来,目前没有出现问题,但是想到如果用户量变大,下单并发量变大,可能会出现一系列的问题,趁着空闲 ...

  6. 团队合作项目—(GG队)

    团队展示 一.队名:GG 二.队员信息 队员 学号 叶尚文(队长) 3116008802 蔡晓晴 3216008808 杜婷萱 3216008809 龙剑初 3116004647 于泽浩 311600 ...

  7. 第一次c++团队合作项目第三篇随笔

    这次终于想出来了上次问题的解决方法,就是用多态的方法,让小兵,建筑和英雄继承于Object类,通过指针能实现信息的传递. 同时我也完善了地图中每个Pane类的信息,包括每个格子的位置信息,state( ...

  8. 第一次c++团队合作项目第二篇随笔

    随着时间的推移,项目也逐渐展开.我的地图也通过按钮的拼接完成了一小部分.这部分我是用了QT上的按钮类来实现的.接下来就是给按钮贴上图片,然后最重要也是最困难的是实现参数的传递,如何实现点击一个英雄或小 ...

  9. 一次项目实践中DBCP数据库连接池性能优化

    关于数据库连接池DBCP的关注源于刚刚结束的一轮测试,测试内容是衡量某Webserver服务创建用户接口的性能.这是一款典型的tomcat应用,使用的测试工具是Grinder.DBCP作为tomcat ...

随机推荐

  1. 【Flask】SelectedField 同步数据库

    ## 如果不加入__init__函数会导致,SelectedField表单生成只有里面的内容不会和数据库同步(即数据库添加,删除字段时表单中数据项和初始化时一致.下一次重启app是才会同步) clas ...

  2. Android硬件抽象层(HAL)概要介绍【转】

    本文转载自:http://blog.csdn.net/luoshengyang/article/details/6567257 Android的硬件抽象层,简单来说,就是对Linux内核驱动程序的封装 ...

  3. Codeforces Round #250 (Div. 2) A, B, C

    A. The Child and Homework time limit per test 1 second memory limit per test 256 megabytes input sta ...

  4. html5新特性contenteditable 属性更容易实现动态表单

    介绍html5新特性的一个属性:contenteditable 作用域全局.所有的块标签都可以,例如:span.p.div.td等标签.但是,不可以作用域<br/>类型的标签. conte ...

  5. php数据结构课程---3、队列(队列实现方法)

    php数据结构课程---3.队列(队列实现方法) 一.总结 一句话总结: 1.数据实现:适用于功能不复杂的情况 2.链表实现:受限链表,只能队头队尾操作:适用于功能复杂情况 1.队列的数组实现注意点? ...

  6. 分享知识-快乐自己:反射机制Demo解析

    Java-Reflect专题 基本反射简介: 1):JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象能够调用它的任意方法和属性;这种动态获取信息以及动 ...

  7. 用cookie登录慕课网络教学中心刷评论

    声明:本文仅供学习参考 我们学校和的网络教学平台是在慕课网上的,需要登录到慕课网的教学平台以后,拿到cookie 注意:没次提交后需要休眠,否则刷评论过快会被系统发现 如果请求太快,很容易被系统发现( ...

  8. 串行总线 —— I2C、UART、SPI

    I2C,也叫 IIC,是一种常见的串行总线,它只需要两根线即可在连接于总线上的器件之间传送信息. 0. 电气知识 开漏输出:Open drain output,不输出电压,低电平时接地,高电平时不接地 ...

  9. error: ‘errno’ was not declared in this scope

    问题: 将一个c文件改为cpp文件,其中的perror()改用C++中的std::cerr << strerror(error) << std::endl;来替换. 重新编译文 ...

  10. Gym - 100851G:Generators(人尽皆知但是WA题)

    题意:现在有函数,每一项Xi=(A*X(i-1)+B)%C.现在给定N个函数以及K:X0,A,B,C.然你再每个函数选择一个数,使得其和最大,而且不被K整除. X0,A,B,C<=1e3 :K& ...