zoukankan      html  css  js  c++  java
  • 并发总结

    并发总结:

       并发的定义,能不能同时服务多个客户端

       其实,以后做并发可以从三个思路出发,三种技术

    一    进程并行,只能开到CPU个数进程,但是它能用来处理计算型(cpu密集型)的任务    # 开销大

    二    如果并行不是必须的,那么是否可以考虑用并发来代替?(IO密集型)    # 线程,单位开销比进程小很多

      因为线程中的并发是轮询调度,遇到阻塞就切换

      只要是网络,一定有延迟,有延迟一定有阻塞

        由于全局解释器锁的存在,在进行多线程操作的时候,不能调用多个CPU内核,只能利用一个内核,

      所以在进行CPU密集型操作的时候,不推荐使用多线程,更加倾向于多进程。那么多线程适合什么样的应用场景呢?

      对于IO密集型操作,多线程可以明显的提高效率,例如Python爬虫的开发,

      绝大多数时间爬虫是在等待socket返回数据,网络IO的操作延时比CPU大得多。

    三   如果轮询调度也不是必要的,那么是否可以考虑只要阻塞来切换

      使用IO多路复用 + 协程来实现阻塞切换(并发量最高)

      函数变成协程,函数本身就几行代码,所以消耗少

      协程需要用户自己来编写调度逻辑,对于CPU的切换来说,协程是单进程,所以CPU不用

    去考虑怎么调度、切换上下文,这就省去了CPU的切换开销,所以协程在一定程度上又好于多线程。

    没有十全十美的技术,我们要按照我们的实际需求看具体用什么技术

  • 相关阅读:
    【原创】使用开源libimobiledevice盗取iphone信息
    【原创】Arduino制作Badusb实践
    【原创】Aduino小车玩法全记录
    【原创】Arduino入门基础知识总结
    【原创】Arduino、arm、树莓派与单片机
    【原创】PM3破解IC卡记录
    【转】反编译D-Link路由器固件程序并发现后门
    DDOS分布式拒绝服务
    XSS 初识
    针对企业级别渗透测试流程
  • 原文地址:https://www.cnblogs.com/pywjh/p/9516996.html
Copyright © 2011-2022 走看看