zoukankan      html  css  js  c++  java
  • socket的阻塞与非阻塞,同步与非同步

    网络编程中通常提到四种方式,同步/异步,阻塞/非阻塞。以下对它们的概念进行总结

    1、同步/异步:主要针对C端

    同步:所谓同步,就是在C端发出一个功能调用时,在没有得到结果之前,调用不返回,也就是必须一件一件事做,等前一件做完了才能做下一件事。

    例如普通B/S模式(同步):提交请求->等待服务器处理->处理完毕返回,这个期间客户端浏览器不能干任何事。

    异步:当C端一个异步调用发出后,调用者不能立即得到结果,实际处理这个调用的部件在完成后,通过状态,通知和回调来通知调用者。

    例如 ajax请求(异步):请求通过事件触发->服务器处理(这时浏览器仍然可以做其他事情)->处理完毕

    2、阻塞/非阻塞 主要针对S端

    阻塞:阻塞调用是指调用结果返回之前,当前线程会被挂起(线程进入非可执行状态,在这个状态下,CPU 不会给线程分配时间片,及线程暂停运行)。函数只有在得到结果之后才会返回。

    非阻塞:与阻塞概念相对应,指在不能立即得到结果之前,该函数不会阻塞当前线程,而会立刻返回。

     注意:

    socket 默认使用的是非阻塞式异步传输通讯方式,对应的MFC的CSocket利用的是面向连接的TCP协议。

  • 相关阅读:
    JavaScript 字符串常用操作
    Redis分布式锁
    CSS布局之-水平垂直居中
    vuejs学习笔记(1)--属性,事件绑定,ajax
    Angular.js学习笔记 (一)
    几年前写的一个支持多数据库切换的设计
    bundle中vim相关快捷键的使用
    使用Bundle进行VIM插件的管理
    javascript代码在线测试
    线程池的创建
  • 原文地址:https://www.cnblogs.com/sunshine1218/p/6769721.html
Copyright © 2011-2022 走看看