并发
同时拥有两个或者多个线程,如果程序在单核处理器上运行,多个线程将交替的换入或者换出内存,这些线程是同时存在的,每个线程都处于执行过程中的某个状态,如果运行在多喝处理器上,此时,程序中的每个线程都将分配到一个处理器核上,因此可以同时运行
多个线程操作相同的资源 保证线程安全 合理使用资源
高并发
是互联网系统架构设计中中必须考虑的因素之一,它通常是指,通过设计保证系统能够同时并行处理很多请求
服务能同时处理很多请求 提高程序性能
并发编程的基础-CPU多级缓存
CPU的频率太快 ,快到内存跟不上,快到主存跟不上,这样在处理器时钟周期内,COU常常需要等待主存,浪费资源。所以Cache的出现,是为了换届CPU和内存之间的速度的不匹配问题(结构:CPU->Cache->Memory)
CPU Cache意义:
时间局部性:如果某个数据被访问 那么在不久得将来他很可能被再次访问
空间局部性:如果某个数据被访问 那么与他相邻的数据模块他很可能很快被访问
CPU多级缓存-缓存一致性(MESI):
用于保障多个CPU CAChe之间缓存共享数据的一致
CPU多级缓存-乱序执行优化
处理器为提高运算速度而做出违背原有代码原则的顺序优化
并发的优势
速度:同时处理多个请求,响应更快;复杂的请求可以分成多个同时进行
设计:程序设计在某些情况下更简单,也可以有更多的选择
资源利用:CPU 能够在等待IO的时候做一些其他的操作
并发的危险:
安全性:多个线程共享数据是可能会产生于期望不相符的结果
活跃性:某个操作无法继续进行下去时,就会产生活跃性问题,比如死锁、饥饿等问题
性能:线程过多会使得CPU频繁切换、调度时间增多、同步机制、小号更多内存