并发和任务调度的高级知识点
来源:互联网 发布:卵巢癌的早期b超数据 编辑:程序博客网 时间:2024/05/18 00:09
1、CAS : Compare And Swap/Set
2、Memory Barrier: 内存栅栏,这是一个CPU级的指令,比锁的开销要小
3、Cache Line:
cpu中普遍的cache line为64 bytes,所有补齐朝采用64byte。
jvm中 所有对象有2个word的header,每个word 为4 byte,所以共8byte。
为了在packing的时候更高效,对象的field被从定义顺序(基于字节大小)按下列顺序重排:
1.doubles(8) and longs(8)
2.ints(4) and floats(4)
3.shorts(2) and chars(2)
4.booleans(1) and bytes(1)
5.references(4/8)
6.<repeat for sub-class fields>
所以我们补齐cache line:在任意field之间补上7个long(8)
4、CPU False Sharing(伪共享):
5、CPU Affinity(亲缘性):
按照默认设置,当系统将线程分配给处理器时,如果所有其他因素相同的话,它将设法在它上次运行的那个处理器上运行线程。让线程留在单个处理器上,有助于重复使用仍然在处理器的内存高速缓存中的数据。
计算机在引导时,系统要确定机器中有多少个CPU可供使用。按照默认设置,任何线程都可以调度到这些CPU中的任何一个上去运行。为了限制在可用C P U的子集上运行的单个进程中的线程数量,可以调用SetProcessAffinityMask。子进程可以继承进程的亲缘性。此外,可以使用作业内核对 象将一组进程限制在要求的一组CPU上运行。
在大多数环境中,改变线程的亲缘性就会影响调度程序有效地在各个CPU之间移植线程的能力,而这种能力可以最有效地使用CPU时间。
5、SMP:Symmetrical Multi-Processing,对称多处理技术,是指在一个计算机上灰机了一组处理器(多CPU),各CPU之间共享内存子系统以及总线结构。
要实现SMP,对CPU也有要求
5.1 CPU内部必须内置APIC,Advanced Programmable Inteerrupt Controllers 可编程中断控制器,CPU通过彼此发送中断来完成他们之间的通信。
5.2 相同的产品型号,这样可以保证指令完全一样
5.3 完全相同的运行频率
5.4 尽可能保持相同的产品序列编号
6、Mechanical Sympathy:Hardware and software working together in harmony,讲的是底层硬件是如何运作的,以及与其协作而非相悖的编程方式。(注解:sympathy这里是共鸣、一致的含义),也就是说软件的编程方式要考虑到硬件的系统结构,如果不遵循相关硬件架构,可能导致的代价非常大。就算有了合适的算法,也可能导致低效的性能。(Martin Thompson很喜欢用Mechanical Sympathy这个短语,这个短语源于赛车驾驶,它反映了驾驶员对于汽车有一种天生的感觉,所以他们对于如何最佳的驾御它非常有感觉。)
7、Thread.yield() |java.util.concurrent.locks.LockSupport
.park() / unPark(Thread);
- 并发和任务调度的高级知识点
- Oracle任务调度的高级选项
- C++多核高级编程 - 06 并发任务的通信和同步(2) 对并发进行同步
- 任务的调度和切换
- Java并发定时任务调度之Timer和ScheduledExecutorService
- C++多核高级编程 - 06 并发任务的通信和同步(1) 通信和同步
- 处理机的高级、中级和低级调度
- Golang和Erlang的并发调度浅析
- uCOS-II的任务调度和时钟
- Spark的架构和任务调度
- laravel的任务调度和linux的计划任务
- laravel框架-任务调度-知识点总结
- 基于嵌入式操作系统VxWorks的多任务并发程序设计(3) ――任务调度
- ucos的任务调度
- ucos的任务调度
- Oracle的任务调度
- spring的调度任务
- 任务的调度
- 深入理解 CSS 中的行高与基线
- hdu 3341 Lost's revenge(AC自动机+变进制状压DP)
- SQL_数学函数
- 又是一个没有开通博客的啊
- Python中的__init__()方法及其继承
- 并发和任务调度的高级知识点
- hashSet linkedHashSet treeSet 一点区别
- 表空间正在热备份时关闭实例重启报错的重现和解决
- 十一月你好
- SharePoint Search之(四)Promoted Results—让搜索结果置顶
- OpenCV学习笔记1
- linux在weblogic上发布web应用以及weblogic输入密码后报错的问题
- 基于动态代理的CharacterEncodingFilter,GzipFilter
- JAVA程序设计(14.3)----- 图书馆管理系统 初步设计 界面篇~借书目录查看窗口,新书添加窗口