聊聊同步、异步、阻塞与非阻塞

同步基于请求、异步和其他通知。
阻塞做其他事情,非阻塞做其他事情。

同步阻塞、轮询等——简单,但速度慢。
同步、非阻塞,可以定期查看,这样省力但可能比较耗时。

异步阻塞,回调到来,如果没有,则等待。
异步且非阻塞,在回调到达时运行,并继续运行直到完成。

Nginx 使用异步非阻塞,Node.js 也是如此。
脚本按顺序执行并同步阻塞。

非阻塞并不意味着异步,它可以挂在等待事件上。
异步并不意味着非阻塞,回调也可以等待。

最有效的是异步非阻塞,但是写起来比较困难。
同步非阻塞,检查次数过多会很慢。

自己掂量一下。

线程的基本概念、线程基本状态以及状态之间的关系

上周有客人问我为什么只能有一个CPU,但好像可以同时运行多个线程?事实上,这就像你自己玩多个游戏一样。
虽然你们玩的游戏不同,但是手和眼睛都会变,对吧? CPU 也是如此,因为不同线程之间的交换执行得非常快。

例如,2 02 3 年,我在上海的一家商场里,看到了快速变化的桌子的华丽展示。
事实上,这些牌桌并不是同时玩的,而是切换得太快,肉眼看不到。
Java中的状态线程类似于玩游戏时的状态转移。
就绪状态意味着你的游戏已经准备好并等待CPU进行调用;运行状态就像CPU调用你的游戏;同步阻塞是指您的游戏因其他玩家正在玩而被中断的状态;等待和睡眠随着你的游戏放下而暂停,等待你过来继续玩;最后,就像游戏一样,这是一个结束状态,你不能再玩了。

曾几何时,我记得,我踩到的坑是我没有正确处理多重程序中序列同步的输出,结果导致程序出现了很大的问题。
所以了解线程的状态和同步很重要。
不过,这也提醒了我要跑向夕阳,让日子慢下来,哈哈。
无论如何,这取决于你,我还在考虑这个问题。