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

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

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

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

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

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

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

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

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

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

     注意:

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

  • 相关阅读:
    [USACO18DEC]Fine Dining
    [USACO18DEC]Cowpatibility(容斥 or bitset优化暴力)
    [P2387魔法森林
    P4172 [WC2006]水管局长
    P2486 [SDOI2011]染色
    P3950部落冲突
    P4332三叉神经树
    莫比乌斯反演习题总结
    牛客 斐波那契数列问题的递归和动态规划3
    牛客 统计和生成所有不同的二叉树
  • 原文地址:https://www.cnblogs.com/sunshine1218/p/6769721.html
Copyright © 2011-2022 走看看