程序、进程、线程、并行和并发到底是什么?
打个比方,我们生活中需要完成“做饭吃”这个工作,做这个工作需要借助“厨房”这个平台,“厨房”就是我们的程序;我们要用厨房做一盘菜,“做这盘菜”就是一个进程;那么显而易见,做菜的每一个步骤就是一个线程啦。
在做菜的过程中多个人(多核)帮忙,一人准备材料、一人掌勺,同时运行更多的线程,速度提高了许多呢,这是不是就是多线程并行工作呢?
在者,准备材料的人在把前面的材料准备完后情急的情况下可以去趟厕所,这就是多进程并行吧。
协程、并行和并发参看这篇博文。简单说来,并行是物理上支持(看起来像)同时运行,并发是程序的一种设计理念——将任务拆分成平行的模块共同运行。
经验不足不做过多的深究。
※ 参考资料:
进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位。——百度百科
进程(英语:process),是指计算机中已运行的程序。进程为曾经是分时系统的基本运作单位。在面向进程设计的系统(如早期的UNIX,Linux 2.4及更早的版本)中,进程是程序的基本执行实体;在面向线程设计的系统(如当代多数操作系统、Linux 2.6及更新的版本)中,进程本身不是基本运行单位,而是线程的容器。程序本身只是指令、数据及其组织形式的描述,进程才是程序(那些指令和数据)的真正运行实例。若干进程有可能与同一个程序相关系,且每个进程皆可以同步(循序)或异步(平行)的方式独立运行。现代计算机系统可在同一段时间内以进程的形式将多个程序加载到存储器中,并借由时间共享(或称时分复用),以在一个处理器上表现出同时(平行性)运行的感觉。同样的,使用多线程技术(多线程即每一个线程都代表一个进程内的一个独立执行上下文)的操作系统或计算机体系结构,同样程序的平行线程,可在多CPU主机或网络上真正同时运行(在不同的CPU上)。——维基百科
线程(英语:thread)是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。在Unix System V及SunOS中也被称为轻量进程(lightweight processes),但轻量进程更多指内核线程(kernel thread),而把用户线程(user thread)称为线程。——维基百科
- “哲学家进餐”问题的代码实现
- 进程、程序、线程、多线程、并发、并行详解
- Java高并发程序-Chapter2 Java并行程序基础 (第四讲)进程和线程
- Java高并发程序-Chapter2 Java并行程序基础 (第五讲)线程的基本操作
- 线程 线程与进程的区别 并行和并发的区别 线程安全sychronized 等待唤醒机制
- Java并发01:进程、线程、并发、并行、多线程、线程安全、死锁、并发优缺点
- 基础知识:线程,进程。多进程,多线程。并发,并行的区别
- 并行和并发的区别 进程和线程的区别
- 并发和并行 进程和线程的概念
- 进程与线程,并发和并行的区别:吃馒头的比喻
- Python并发编程之常用概念剖析:并行 串行 并发 同步 异步 阻塞 非阻塞 进程 线程 协程
- Java成神之路(二十)并行与并发,线程与进程
- 进程、线程知识点总结和同步(消费者生产者,读者写者三类问题)、互斥、异步、并发、并行、死锁、活锁的总结
- 线程、进程的概念【多/单线程与多/单进程的区别】【并发与并行的区别】【CPU型号的识别】
- Java 多线程编程之一 进程与线程,并发和并行的区别
- 进程和线程-并发和并行
- 进程,线程和协程 并行与并发
- 进程和线程、并发和并行
- 进程与线程、并发与并行、同步与异步的区别
- [面试]进程与线程的区别联系,并发和并行的区别
- Java高并发程序-Chapter2 Java并行程序基础 (第八讲)线程组 、守护线程、线程优先级