[原文地址:https://blog.ti-node.com/blog...]php
要想更好了解socket编程,有一个不可绕过的环节就是IO.
在Linux中,一切皆文件.实际上要文件干啥?不就是读写么?因此,这句话本质就是"IO才是王道".用php的fopen打开文件关闭文件读读写写,这叫本地文件IO.在socket编程中,本质就是网络IO.
因此,在开始进一步的socket编程前,咱们必须先从概念上认识好IO.
若是到这里你还对IO没啥概念,那么我就经过几个词来给你一个大概的印象:同步,异步,阻塞,非阻塞,甚至是同步阻塞,同步非阻塞,异步阻塞,异步非阻塞.是否是晕了?截至到目前为止,你能够简单地认为只要搞明白这几个名词的含义以及区别,就算弄明白IO了,至少了能够继续往下看了.
先机械记忆一波儿:IO分为两大种,同步和异步.node
那么如何理解区别这几个概念呢?尤为是同步和阻塞,异步和非阻塞,看起来就是同样的.
我先举个例子结合本身的理解来讲明一下:编程
若是你仔细品过上面案例中的每个字,你就能慢慢体会到之因此异步和非阻塞,同步和阻塞容易混淆,仅仅是由于两者的表现形式稍微有点儿类似而已.
阻塞和非阻塞关注的是:在等馒头的过程当中,你在干啥.
同步和异步关注的是:等馒头这件事,你是一直等到"馒头出炉"的结果,仍是当即跑路等阿梅告诉你的"馒头出炉".重点的是你是如何得知"馒头出炉"的.
因此现实世界中,最傻的人才会采用异步阻塞的IO方式去写程序.其他三种方式,更多的人都会选择同步阻塞或者异步非阻塞.同步非阻塞最大的问题在于,你须要不断在各个任务中忙碌着,致使你的大脑混乱,很是累.微信
[原文地址:https://blog.ti-node.com/blog...]网络