zoukankan      html  css  js  c++  java
  • UDP协议和并发编程

    一、UDP协议

    1.UDP协议

    称之为数据包协议。

    特点:
      1) 不需要建立链接。
      2) 不需要知道对方是否收到。
      3) 数据不安全
      4) 传输速度快
      5)能支持并发
      6) 不会粘包
      7) 无需先启动服务端再启动客户端

    优点:
      - 传输速度快
      - 能支持并发
      - 不会粘包

    缺点:
      - 数据不安全, 容易丢失

    应用场景: 早期的QQ聊天室。

    - TCP协议(称为流式协议):

    优点:
    - 数据安全

    缺点:
    - 传输速度慢
    - 粘包

    二、并发编程

    1) 操作系统发展史
    - 1.1 穿孔卡片
    - 读取数据速度特别慢
    - CPU的利用率极低
    - 单用户(一份代码)使用
    - 1.2 批处理
    - 读取数据速度特别慢
    - CPU的利用率极低
    - 联机(多份代码)使用
    - 效率还是很低
    - 1.3 脱机批处理(现代操作系统的设计原理)
    - 读取数据速度提高
    - CPU的利用率提高
    2) 多道技术 (基于单核背景下产生的):
    - 单道: 一条道走到黑 ----> 串行
    - 比如: a,b需要使用cpu,a先使用,b等待a使用完毕后,b才能使用cpu。
    - 多道: 
    - 比如: a,b需要使用cpu,a先使用,b等待a,直到a进入“IO或执行时间过长”
    a会(切换 + 保存状态),然后b可以使用cpu,待b执行遇到 “IO或执行时间过长”
    再将cpu执行权限交给a,直到两个程序结束。
    - 空间上的复用
    多个程序使用一个CPU。
    - 时间上的复用
    切换 + 保存状态
    1) 当执行程序遇到IO时,操作系统会将CPU的执行权限剥夺。
    优点:
    - CPU的执行效率提高
    2) 当执行程序执行时间过长时,操作系统会将CPU的执行权限剥夺。
    缺点:
    - 程序的执行效率低
    - 并发与并行:
    - 并发:
    在单核(一个cpu)情况下,当执行两个a,b程序时,a先执行,当a遇到IO时,b开始争抢cpu的执行权限,再让b执行,他们看起像同时运行。
    - 并行:
    在多核(多个cpu)的情况下,当执行两个a,b程序时,a与b同时执行。他们是真正意义上的同时运行。
    面试题: 在单核情况下能否实现并行? 不行
    3) 进程
    1.什么是进程?
    进程是一个资源单位。
    2.进程与程序:
    - 程序: 一对代码文件。
    - 进程: 执行代码的过程,称之为进程。
    3 进程调度: (了解)
    1) 先来先服务调度算法(了解)
    - 比如程序 a,b,若a先来,则让a先服务,待a服务完毕后,b再服务。
    - 缺点: 执行效率低。
    2) 短作业优先调度算法(了解)
    - 执行时间越短,则先先调度。
    缺点:
    导致执行时间长的程序,需要等待所有时间短的程序执行完毕后,才能执行。
    现代操作系统的进程调度算法: 时间片轮转法 + 多级反馈队列 (知道)
    3) 时间片轮转法
    - 比如同时有10个程序需要执行,操作系统会给你10秒,然后时间片轮转法会将10秒分成10等分。
    4) 多级反馈队列:
    1级队列: 优先级最高,先执行次队列中程序。
    2级队列: 优先级以此类推
    3级队列:
    4) 同步与异步
    同步与异步 指的是 “提交任务的方式”。
    同步(串行):
    两个a,b程序都要提交并执行,假如a先提交执行,b必须等a执行完毕后,才能提交任务。
    异步(并发):
    两个a,b程序都要提交并执行,假如a先提交并执行,b无需等a执行完毕,就可以直接提交任务。
    4) 阻塞与非阻塞
    - 阻塞(等待):
    - 凡是遇到IO都会阻塞。
    - IO:
    input()
    output()
    time.sleep(3)
    文件的读写
    数据的传输
    - 非阻塞 (不等待) :
    - 除了IO都是非阻塞 (比如: 从1+1开始计算到100万)
    5) 进程的三种状态
    - 就绪态:
    - 同步与异步
    - 运行态: 程序的执行时间过长 ----> 将程序返回给就绪态。
    - 非阻塞
    - 阻塞态:
    - 遇到IO
    面试题: 阻塞与同步是一样的吗?非阻塞与异步是一样的吗?
    - 同步与异步: 提交任务的方式
    - 阻塞与非阻塞: 进程的状态。
    - 异步非阻塞: ----> cpu的利用率最大化!

  • 相关阅读:
    cocos2d JS 在 JavaScript 中,怎样把一个对象转化成 JSON 字符串?
    cocos2d-x 暂停/恢复 与场景相关(SceneGraph类型)的监听器
    cocos2d CCNode类(节点属性大全)
    cocos2d-x 错误异常抛出捕获和崩溃拦截
    cocos2d JS 鼠标响应事件
    cocos2d JS 创建实现换行功能的聊天文本 testLable
    cocos2d JS 自定义事件分发器(接收与传递数据) eventManager
    cocos2d JS 监听键盘触摸响应事件(cc.EventListener.KEYBOARD)
    cocos2d JS touch(触摸监听)-快速添加事件监听器到管理器
    cocos2dx C++ imageView(图片/九宫格)相关属性大全
  • 原文地址:https://www.cnblogs.com/hexianshen/p/11996182.html
Copyright © 2011-2022 走看看