1 同步 异步 阻塞 非阻塞
二者的区别和联系是:
同步和异步是针对是消息的通知机制而言。
同步:你亲自等待消息的到来。
异步:建立一种消息通知机制 由第三方时刻等待消息到来 一旦到来 第三方立即通知你你
而你可以在消息没有来之前 做其他事。
同步: ' 你 ' 亲自办这件事 异步: 交代要做的事情,然后忙其他的事情; ' 别人 '( 内核 ) 会充当你的跑腿,在条件就绪后将这事办成,然后通知你 (callback) ;
以去银行办业务为例:
我的理解是: 同步的时候,不是站在你前面的人通知你,是你自己得看着你前面还有没有人。 而小纸条就不一样了,你拿了纸条就不用管了,出去溜达都可以,反正到时候有人会叫你。
阻塞和非阻塞是 针对消息(或事件)的处理方式而言的。
阻塞: 如果条件未就绪, ' 你 ' 必须死等它就绪 ; 进程睡眠 非阻塞:如果条件未就绪, ' 你 ' 可以转身作别的事情 ; 进程可以作任何想做的事情,不过通常是低效的轮询。
结合 window 的消息驱动 二者共同完成:捕获消息 ---- 》处理消息(即处理消息指示的事件)。
2
10035 不是错误。改变为 nonblock 模式后第一个改变的观念就是:不能认为凡是遇到 SOCKET_ERROR 都认为遇到错误了。 WSAEWOULDBLOCK 是一种正常性的错误码,他告诉你现在这个操作无法完成,必须等待后续的通知。