socket编程的同步与阻塞有什么区别? 还有异步与非阻塞的区别这些概念有点不明确 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 阻塞和非阻塞很好区别,所谓阻塞就是系统调用在IO调用完成时才返回,被阻塞的进程处于睡眠状态。 非阻塞IO是指不管系统调用是否完成都立刻返回,不会导致进程挂起。服务器的设计中都使用非阻塞IO,用于响应高并发的连接请求。 这里还有个概念就是IO复用,其实是阻塞到select或poll等这样的系统调用,而不是真正的read或write。 同步和异步IO:下面是POSIX的定义 所谓同步IO就是请求进程阻塞到直到IO操作完成时。阻塞IO和非阻塞IO都是同步IO。 异步IO就是IO操作不会引起请求进程的阻塞。 http://www.fawonline.com.cn/blog/?p=233 同步异步是指客户端是否等待服务器的允许发送指令!!在服务器端实现是否同步!!阻塞,非阻塞,是指接收数据是否等待!!一般来说,非阻塞通过判断socket的状态来决定是否接收数据!!阻塞是一直等待数据的到来,可以选择超时时长!! 阻塞是指的单一函数的操作模式,对send、connect等等这样的比较耗时或者是效率不定的函数,一般都分阻塞和非阻塞调用。同步和异步指的一种函数调度的方式。例如一个函数说是同步调用方式,可以理解成就是单进程调度模式几乎就等同于阻塞调用,只有这个函数内部处理完了,才能进行下一步。异步调度,本质就是多线程,等这个函数内部的事情处理完了就告诉你。所以异步调用,必须存在一个回调接口。或采用消息或采用callback等等。同步和阻塞几乎就是一样的,但是同步可以表述一种“封装”。而阻塞仅仅适用于函数。异步和非阻塞有点区别,因为异步一定涉及两个以上的函数(一个是调用函数,一个是回调函数)。而非阻塞同样只适用于函数,因此不涉及回调。 定义调用动态二维数组 如何把一个导入库加入到工程里面? 非客户区绘制的问题 如何判断程序是否在运行 CM_Get_Device_ID_Ex怎样在VC6 下调用 程序运行中弹出了一个奇怪的对话框 请大侠帮帮忙 “IME level 3”是什么意思? 请告诉我何种水平才能做软件开发? 如何显示直径比较大的点 一个关于CSocket的问题! 重叠IO中为什么会有两个WSARecv 关于数据库 delete的疑惑
非阻塞IO是指不管系统调用是否完成都立刻返回,不会导致进程挂起。服务器的设计中都使用非阻塞IO,用于响应高并发的连接请求。
这里还有个概念就是IO复用,其实是阻塞到select或poll等这样的系统调用,而不是真正的read或write。 同步和异步IO:下面是POSIX的定义
所谓同步IO就是请求进程阻塞到直到IO操作完成时。阻塞IO和非阻塞IO都是同步IO。
异步IO就是IO操作不会引起请求进程的阻塞。
阻塞,非阻塞,是指接收数据是否等待!!一般来说,非阻塞通过判断socket的状态来决定是否接收数据!!阻塞是一直等待数据的到来,可以选择超时时长!!
异步和非阻塞有点区别,因为异步一定涉及两个以上的函数(一个是调用函数,一个是回调函数)。而非阻塞同样只适用于函数,因此不涉及回调。