并发编程-1
2022/8/9 1:24:18
本文主要是介绍并发编程-1,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
UDP协议
# 服务端 import socket server = socket.socket(type=socket.SOCK_DGRAM) server.bind(('127.0.0.1', 8080)) msg,address = server.recvfrom(1024) print('msg>>>:%s' % msg.decode('utf8')) print('address>>>:',address) server.sendto('我是服务端 臭弟弟 你是谁'.encode('utf8'),address) # 客户端 import socket client = socket.socket(type=socket.SOCK_DGRAM) server_address = ('127.0.0.1', 8080) client.sendto('我是客户端 就不告诉你'.encode('utf8'),server_address) msg,address = client.recvfrom(1024) print('msg>>>:%s' % msg.decode('utf8')) print('address>>>:',address) '''补充说明''' 1.服务端不需要考虑客户端是否异常退出 2.UDP不存在黏包问题(UDP多用于短消息的交互)
操作系统的发展史
操作系统的发展史也可以称为并发编程的发展史 """ 回顾计算机小知识 计算机五大核心:运算器 输入设备 输出设备 控制器 存储器 三大核心硬件:CPU 硬盘 内存 CPU:是计算机中真正干活的人 内存:给CPU准备需要运行的代码 硬盘:存储将来可能要被运行的代码 """ 1.穿孔卡片 CPU利用率非常的低 好处是程序员可以一个人独占计算机 2.联机批处理系统 缩短录入数据的时候 让CPU连续工作的时间变长>>>:提升CPU利用率 3.脱机批处理系统 是现代计算机的雏形>>>:提升CPU的利用率 总结: 操作系统的发展史也可以看成是CPU利用率提升的发展史
多道技术
前提:必须是一个核/一个CPU/一个真正干活的 单道技术 所有的程序排队执行 总耗时是所有程序耗时之和 多道技术 计算机利用空闲时间提前准备好一些数据 提高效率 总耗时较短 """ 多道技术 切换+保存状态 1.CPU在两种情况下会切换(去执行其他程序) ① 程序自身进入IO操作 IO操作:输入输出操作 获取用户输入 time.sleep() 读取文件 保存文件 ② 程序长时间占用CPU 2.保存状态 每次切换之前都要保存记录下当前执行的状态 之后切回来基于当前状态继续执行 """ eg: 做饭耗时40min 洗衣服耗时30min 扫地耗时10min 单道技术:40+30+10 多道技术:40
进程理论
1.如何理解进程 程序:一堆躺在文件上的"死的”代码 进程:正在被运行的程序“活的” 2.进程的调度算法 先来先服务算法 针对耗时比较短的程序不太友好 短作业优先调度 针对耗时比较长的程序不太友好 时间片轮转法+多级反馈队列 将固定的时间均分成很多份 所有的程序来了都公平的分一份 分配多次之后如果还有程序需要运行 则将其分到下一层 越往下表示程序总耗时越长 每次分是时间片越多 但是优先级越低
进程的并行与并发
并行 多个进程同时执行 单个CPU肯定无法实现并行 必须要有多个CPU 并发 多个进程看上去像同时执行就可以称之为并发 单个CPU完全可以实现并发的效果 如果是并行 那么肯定也属于并发 eg:描述一个网站很厉害能够同时服务很多人的话术 1.我这个网站很6 能够支持14亿人并行量(高并行) 不合理 哪有那么多CPU(集群也不现实) 2.我这个网站很6 能够支持14亿并发量(高并发) 超级合理 国内最6的网站>>>:12306(很少很少崩溃)
进程的状态
1.所有的进程要想被运行 必须先经过就绪态 2.运行过程中如果出现IO操作 则进入阻塞态 3.运行过程中如果时间片用完 则继续进入就绪态 4.阻塞态想要进入运行态必须先经过就绪态
同步和异步
用于描述任务的提交状态 同步 提交任务滞后原地等待任务的结果 期间不做任何事 异步 提交完任务之后不原地等待直接去做其他事 结果自动提醒
阻塞与非阻塞
用于描述进程的执行状态 阻塞 阻塞态 非阻塞 就绪态 运行态
同步异步与阻塞非阻塞
同步阻塞:在银行排队 在队伍中什么都不做 同步非阻塞:在银行排毒 在队伍中可以玩手机 异步阻塞:取号 在座位上等待叫号 期间不做任何事 异步非阻塞:取号 在座位等着叫号 期间可以玩手机
这篇关于并发编程-1的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23Springboot应用的多环境打包入门
- 2024-11-23Springboot应用的生产发布入门教程
- 2024-11-23Python编程入门指南
- 2024-11-23Java创业入门:从零开始的编程之旅
- 2024-11-23Java创业入门:新手必读的Java编程与创业指南
- 2024-11-23Java对接阿里云智能语音服务入门详解
- 2024-11-23Java对接阿里云智能语音服务入门教程
- 2024-11-23JAVA对接阿里云智能语音服务入门教程
- 2024-11-23Java副业入门:初学者的简单教程
- 2024-11-23JAVA副业入门:初学者的实战指南