项目日志5

codeforces 1097B. Petr and a Combination Lock(1200)

  返回  

1.线程概述

2021/8/20 21:58:07 浏览:

一、进程与线程

1.线程的概念:linux中,线程又叫做轻量级进程(light-weight process LWP),也有PCB进程控制块),在Linux环境下本质仍是进程,创建线程使用的底层函数和进程底层一样,都是clone,但没有独立的地址空间;而进程有独立地址空间,拥有PCB(进程控制块)。

Linux下: 线程:最小的执行单位,调度的基本单位。

进程:最小分配资源单位,可看成是只有一个线程的进程

2.进程与线程区别:

进程:独立地址空间,拥有PCB

线程:没有独立的地址空间(是通过共享数据空间),也有PCB

3.线程的优点与缺点:

线程的优点:
(1)创建一个新线程的代价要比创建一个新进程小得多,释放成本也更低。因为创建一个进程就           意味着要创建PCB,分配虚拟地址空间,页表,物理内存等系统资源,而创建一个线程只需           要创建一个PCB(TCB)即可
(2)与进程之间的切换相比,线程之间的切换需要操作系统做的工作要少很多。进程切换,需要           切换对应的虚拟地址空间,更换页表等。过程繁琐。
(3)线程占用的资源要比进程少很多。
(4)能充分利用多处理器的可并行数量。
(5)在等待慢速I/O操作结束的同时,程序可执行其他的计算任务。
(6)计算密集型应用,为了能在多处理器系统上运行,将计算分解到多个线程中实现 I/O密集型应用,为了提高性能,将I/O操作重叠。线程可以同时等待不同的I/O操作。进程可以将线程串行执行变成并行执行。最后汇总,提高效率。但是尽量不要创建太多线程,线程切换也是需要成本的。


线程的缺点:
(1)性能损失:
一个很少被外部事件阻塞的计算密集型线程往无法与共它线程共享同一个处理器。如果计算密集型线程的数量比可用的处理器多,那么可能会有较大的性能损失,这里的性能损失指的是增加了额外的同步和调度开销,而可用的资源不变。
(2)健壮性降低:
编写多线程需要更全面更深入的考虑,在一个多线程程序里,因时间分配上的细微偏差或者因共享了不该共享的变量而造成不良影响的可能性是很大的,换句话说线程之间是缺乏保护的。一个线程挂掉,因为线程共享一块资源。其他线程也会挂掉。进而导致进程退出,资源被回收。
(3)缺乏访问控制:
进程是访问控制的基本粒度,在一个线程中调用某些OS函数会对整个进程造成影响。多线程访问临界资源,它的访问控制是由编程者决定。
(4)编程难度提高
编写与调试一个多线程程序比单线程程序困难得多,基于同步互斥。你需要不断的加锁。

联系我们

如果您对我们的服务有兴趣,请及时和我们联系!

服务热线:18288888888
座机:18288888888
传真:
邮箱:888888@qq.com
地址:郑州市文化路红专路93号