菜鸟教程html下载
线程线程与进程有很多类似的地方,但是也有部分不一样。在讲进程的时候我们给大家看过一张图。
从图中可以看出来线程是在进程内创建的,也就说多个线程共享一个进程内的资源;包括内存、地址空间源码、文件描述符等等使用多线程是无序执行的,线程的调度和进程一样,由操作系统来调度,因此什么时候执行我们并不知道有一句话可以概括:线程就是更轻量的进程。
线程一个进程至少有一个线程同一个进程内的多个线程共享源码同一份资源文件描述符表信号处理方式当前工作目录内存地址空间每个线程有自己的独立栈,也就是线程内部的变量其他线程拿不到,除非是在进程内的全局变量既然有了多进程为什么我们还需要多线程?进程在遇到IO会阻塞源码,后面的代码无法执行,这时候CPU处于空跑状态,为了充分的利用CPU,操作系统会自动把遇到IO阻塞的进程挂起,切换到其他进程。
进程上下文
线程上下文
操作系统会给每一个进程分配给可用的时间片,就是每个进程源码每次运行多久,例如:CPU给每个进程分配了10ms的时间,如果一个进程执行到3ms的时候发生了IO阻塞怎么办呢?在单线程的情况下,会被切换到另一个进程,当前进程会被挂起。
而多线程呢,是尽可能的利用完C源码PU给这个进程分配的时间片举个“栗子”,微信我们大家都在用,微信很显然就是一个多线程程序,为什么这样说呢?我们在跟别人视频的时候同时还可以跟其他人聊天,还可以使用输入法输入文字,选择表情,如果只有一个源码线程,那么我们在跟别人视频的时候这个线程就会阻塞,我们看到微信的界面就会卡死。
一个线程遇到阻塞的时候,会在同一个进程内的其他空闲线程切换,这样的切换只要消耗线程栈开销,因此很多时候我们都说线程是轻量级源码的进程因此需要把一个进程里面的任务再次分割成任务片,类似CPU分出来的时间片一样,分成多少份就开多少个线程。
我们可以通过多线程来实现一个CC攻击器实战:CC攻击器CC攻击就是一种制造大量访问导致对方服源码务器资源耗尽无法提供服务的一种手段,这里用简单的方式实现,采用多线程+线程池+curl实现一个简单的cc攻击扩展下载地址:
https://github.com/krakjoe/pthreads.git源码cc.php
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。