• 【Network】关于TCP异步的浅薄看法


    1. 什么是TCP异步

    一般的socket的编程,是基于同步机制开发的服务器和客户端,线程会进入阻塞或者挂起状态,降低线程利用率,同时程序影响效率。因此,tcp程序引入异步回调:—在异步套接字完成网络操作后,线程没有被阻塞或者挂起,接着通过调用回调函数处理后续网络操作。而主线程继续执行,以实现并行执行的结果

    2. 为什么要引入异步

    看到过一个解释。当我们打开一个程序时,鼠标不停地转但是就是不见界面跳转,这是其他耗时操作阻碍了ui线程,造成ui线程不能响应用户操作。如果引用异步机制,ui线程在发起耗时操作之后马上回来响应用户操作,把能响应的都给用户,最后等耗时操作结束,通过回调来处理耗时操作的结果。这就是异步机制能快速响应用户界面,还有更高的伸缩性(线程池更加灵活分配利用数量有限的线程)

    3. python 中实现异步TCP

    gevent.server

    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    
    # 说明: 导入公共模块
    import time
    from gevent.server import StreamServer
    # 说明: 导入其它模块
    def tcp_handler(socket, address):
        timestamp = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime())
        print '%s client(%s) connectd to server.' % (timestamp, address)
        gevent.sleep(5)
        socket.close()
    if __name__ == '__main__':
        host = ''
        port = 80
        server = StreamServer((host, port), tcp_handler)
        server.serve_forever()
    
  • 相关阅读:
    MySQL的事务用法:
    MySQL基本命令(增删改查,check约束)总结:
    (转)nodejs npm国内镜像
    NodeJS学习笔记(三)
    NodeJS学习笔记(二).js
    minimist的用法
    npm link没有效果的问题
    DOM Based XSS介绍
    NodeJS学习笔记(一)
    用Ruby写自动生成Sql语句脚本遇到的问题
  • 原文地址:https://www.cnblogs.com/gaoshaonian/p/16017331.html
Copyright © 2020-2023  润新知