![](https://csdnimg.cn/release/download_crawler_static/82228940/bg7.jpg)
简单来说,程序可以描述为任何可执行文件。它包含一组完成特定的操作指令
集合。它驻留在内存。它是一个被动的实体,不会因操作系统重新重启而消
失。
进程(动态)
程序的任何运行实例都称为进程,也可以将其描述为正在执行的程序。一个程
序可以有多个进程。进程驻留在主内存中,因此进程会随机器重启而消失。多
个进程可以在多处理器系统上并行运行。
线程
线程通常被描述为轻量级进程。一个进程可以有多个线程。同一进程中的线程
与该进程共享内存。线程和进程之间的本质区别是每个线程用于完成的工作。
线程用于小而紧凑的任务,而进程用于更重的任务。
线程 vs. 进程
线程和进程之间的一个主要区别是,同一进程中的线程使用相同的地址空间,
而不同的进程则不会。这允许线程读写公共共享和数据结构和变量,也增加了
线程之间的通信。然而,进程间通信(即 IPC)是非常困难的,并且需要耗费大
量资源。
任务(抽象)
任务与线程非常相似,不同之处在于,它们通常不直接与操作系统交互。与线
程池一样,任务不创建自己的 OS 线程。一个任务内部可能有也可能没有多个线
程。任务是一个宽泛的概念,由许多进程相互作用才能完成
什么时候用任务?
任务比创建自己的线程更简单、更有效。
什么时候用线程?
你需要比任务提供的更多的控制,直接使用线程更有意义。
最重要的是,任务几乎总是最好的选择;它提供了一个更强大的 API,并且避
免了操作系统线程的浪费。在现代代码中显式创建自己的线程的唯一原因是设
置每个线程选项,或者维护一个需要维护自己标识的持久线程。
进程几种状态
就绪状态:进程已获得除处理机以外的所需资源,等待分配处理机资源。
运行状态:占用处理机资源运行,处于此状态的进程数小于等于 CPU 数。
阻塞状态: 进程等待某种条件,在条件满足之前无法执行,也称为等待状态。