研究同步异步-阻塞非阻塞

同步异步和阻塞非阻塞都是指的io时候的概念:

阻塞非阻塞指的是自己:要不要等。

同步异步,一般指的是并发:大家都来请求io,该怎样协调

比如select被称作异步io。

多线程是为了充分利用cpu的计算资源,而select,多路复用是为了利用计算机的io资源。一台计算机总共就这些资源。

一个进程可以打开的文件个数是有限制的,文件描述符数目貌似是64?

一个文件操作设计,open read write seek close就这些。open的时候,oflag参数如果可以是O_NONBLOCK,不设置就是block的:如果p a t h n a m e指的是一个F I F O、一个块特殊文件或一个字符特殊文件,

则此选择项为此文件的本次打开操作和后续的 I / O操作设置非阻塞方式


云资源三种:cpu计算资源,存储资源,网络资源。


 

===============研究阻塞非阻塞 同步异步 begin====在POSIX定义中把同步IO操作定义为导致进程阻塞直到IO完成的操作,反之则是异步IO;分为两个过程,1是数据准备,2是数据运输=====================
同步异步,阻塞非阻塞都是指的IO操作,一个进程可以有多个io操作,算了说go程吧。
我认为:posix的同步异步指的是否需要自己数据运输,阻塞非阻塞指的是,是不是霸占数据运输通道,我的没io完,其他人不许io。
io系统位于os的底层,文件系统会使用他,os的网络部分也会使用他。一旦涉及io就涉及阻塞非阻塞,同步异步问题。io属于系统调用。socket会使用,文件会使用。
select的io多路复用模型:挂起go程,只有当go程中满足条件时候,才会随机选择一个来运行。不用go程自己不停滴轮巡,来了吗来了吗。

异步:系统做
同步:我自己做 
非阻塞:啥也不干,就在这轮巡
阻塞:就在这等着啥也不干

阻塞:我就在这里等,来一点就搬走拿一点
非阻塞:别在这里占着茅坑断断续续拉屎,过几秒钟你来问我吧
阻塞式IO还是非阻塞式IO,都是同步IO模型

同步:posix标准定义的是,数据你自己从我这搬走
异步:posix标准定义的是,你回去吧,也不用来回问,你要的数据,回头我准备好给你放好
POSIX表示可移植操作系统接口(Portable Operating System Interface of UNIX,缩写为 POSIX ),POSIX标准定义了操作系统应该为应用程序提供的接口标准;
POSIX.1 提供了源代码级别的 C 语言应用编程接口(API)给操作系统的服务程序

go语言里面的处理io的select,我感觉是:
非阻塞是肯定的,来了才拿,不会一直占用着cup资源,之所以说不会一直占用cpu资源,是因为chan作为一个环形数组放在堆区,读取数据操作都是cpu做的,而不是系统io做的,
至于是同步还是异步,这个我感觉没法定义。

因为同步异步,是posix标准里头,对于数据拿取,进程是否阻塞来说的,这里分为两个过程,1是数据准备,2是数据运输,异步的话,2步是系统做的,进程不用阻塞。


一般来讲:阻塞IO模型、非阻塞IO模型、IO复用模型(select/poll/epoll)、信号驱动IO模型都属于同步IO,因为阶段2是阻塞的(尽管时间很短)。只有异步IO模型是符合POSIX异步IO操作含义的,不管在阶段1还是阶段2都可以干别的事。

https://blog.csdn.net/zk3326312/article/details/79400805  这个讲同步异步特别好
在POSIX定义中把同步IO操作定义为导致进程阻塞直到IO完成的操作,反之则是异步IO,看概念感觉异步跟非阻塞好像也没有什么区别,要好好理解同步和异步,就要详细说明下IO过程:
==============研究阻塞非阻塞 同步异步 end===========================

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值