建设银行东营分行网站,网站的二维码怎么变小,经典的企业网站,广西桂林旅游几月份去最好多进程已经可以很好的实现并发编程的效果了#xff0c;但是仍然有一个明显的缺点#xff1a;进程太重了#xff0c;进程消耗的资源更多#xff0c;速度更慢。如果进程创建销毁不频繁#xff0c;那么还好#xff0c;一旦需要大规模创建和销毁进程#xff0c;开销就比较大… 多进程已经可以很好的实现并发编程的效果了但是仍然有一个明显的缺点进程太重了进程消耗的资源更多速度更慢。如果进程创建销毁不频繁那么还好一旦需要大规模创建和销毁进程开销就比较大需要给进程分配给进程分配资源。那么能不能只分配一个简单的pcb。而不去分配后续的这些内存硬盘资源呢这样应该可以更快既能够并发的执行任务又能够提升创建开销的速度这样的进程称为轻量级进程也称为线程。 但是不分配给线程资源那么线程是否能运行起来呢当然不能没有如内存等资源线程也无法执行任务那么这不是说线程没有什么用呢或者应该如何去解决这个问题呢其实这个问题早就被大佬所发现并解决创建进程时先把要用到的计算机资源分配好后续在创建线程时让线程在进程内部被创建出来后续进程中的线程直接复用进程这里创建好的资源就行因此进程和线程间的关系可以认为是进程包含了线程。其实一个进程至少要包含一个线程最初创建的进程可以视为只包含一个线程的进程此时创建的过程需要分配资源第一个线程创建开销可能比较大。后续再在这个进程里创建线程就可以省略资源的过程。如睡单间变成睡宿舍。因此这个进程中的多个线程共同复用了进程中的各种资源内存硬盘等但是这些线程各自独立的在CPU上进行调度。因此线程就可以既能够完成并发编程的效果又可以比较轻量的方式来运行。 与进程一样线程同样是通过PCB来描述Windows上描述进程和线程是不同的结构体但在Linux上复用了PCB这个结构体来描述线程此时一个PCB对应一个线程多个PCB对应一个进程不过PCB中的内存指针 文件描述符表同一个进程的多个PCB中这两字段的内容都是一样的但是上下文状态优先级记账信息等支持调度的属性则这些PCB每个PCB的都不一样就和睡宿舍一样所有人共用一个空间但每个人也有着自己的私人物品线程在进程中也是一样同一个进程中PCB中的内存指针和文件描述符表是公共的但也有着专属于自己的东西。所以可以说进程是操作系统进行资源分配的基本单位线程是操作系统进行调度执行的基本单位。 随着进程中线程的数量增加整体的效率也会进一步的提高但这个提高也不是无限的提高当线程的数量过多时效率就没有办法提升甚至线程的调度会拖累整体的效率。说了这么多线程的优点是不是说明线程比进程更好呢其实不然因为线程是在进程中创建与调用那么如果多个线程之间有了冲突这可能导致该线程无法完成任务甚至导致整个进程都无法完成任务了也就带来了线程安全问题而进程间却有隔离性它们之间互不干扰避免了因一个进程有错误而导致其他的进程无法顺利进行。因此多线程编程和多进程编程相比确实是有优势更轻量创建销毁速度更快但也有缺点不像进程那么稳定容易被其他线程干扰。 总结进程和线程的区别和联系是
1进程包含线程都是为了实现并发编程的方式线程比进程更轻量。
2进程是操作系统进行资源分配的基本单位线程是操作系统进行调度执行的基本单位。创建进程的时候把分配资源虚拟地址空间文件描述符表的工作给做了后续创建线程直接共用之前的资源即可。
3进程有独立的地址空间彼此之间不会相互影响到进程的独立性系统稳定性
多个线程共用一份地址空间一个线程一旦抛出异常就可能导致整个进程异常结束。多个线程之间容易相互影响