计算机软件学习中易混淆概念
阻塞与非阻塞
阻塞顾名思义可以理解为停滞不前。在软件中阻塞就是当程序运行到某一段可能需要等待的代码时例如在IO的读写操作时,阻塞意味着当前程序当前线程会等待直至这段代码运行结束才继续向下。结果返回之前,当前线程会被挂起。调用线程只有在得到结果之后才会返回。非阻塞与阻塞相反而是继续向下执行不等待这段代码返回的结果。但是在此我有个疑问:那就是当非阻塞代码运行时,如发生了一个耗时较长的代码将会被越过,那么当前线程将会继续向下执行,那这段耗时时间较长的代码会在哪个地方执行?是会新建一个线程去运行?还是怎样
同步与异步
同步我觉得这个词的理解可以参照另外一个词叫同声传译,场景也很形象。当翻译官同声传译给别人时,这个人可以同步的接收到另外一个人说的话的翻译。类比程序,举个简单的栗子就是两个线程共用一个变量,如果这个变量的值在线程A里面改变,那么线程B接下来所有调用此变量的值都会同步为最新的值。
异步则是双方不需要共同的时钟,你调你的变量我调我的。
并发与并行
并发类似单个 CPU ,通过 CPU 调度算法等,处理多个任务的能力。
并行类似多个 CPU ,同时并且处理相同多个任务的能力。
这个文章我会持续更新,在学习过程中发现什么易混淆的概念就会更新,大家有什么觉得爱混淆的可以私信或者评论。还是内句话鄙人才疏学浅上述概念若有误请斧正