WEB开发网
开发学院软件开发Java 内存屏障与JVM并发 阅读

内存屏障与JVM并发

 2010-05-11 00:00:00 来源:WEB开发网   
核心提示: st.rel屏障是单向的——就像ld.acq一样,但是在第五行编译器设置了一个双向内存屏障,内存屏障与JVM并发(5),mf指令,或者称为“内存栅栏”,重要的是认识到这些指令在不同的硬件体系中迥异,下面的指令是连续写操作在多处理 Intel Xeo

st.rel屏障是单向的——就像ld.acq一样。但是在第五行编译器设置了一个双向内存屏障。mf指令,或者称为“内存栅栏”,是Itanium 2指令集中的完整栅栏。笔者认为是多余的。

内存屏障是特定于硬件的

本文不想针对所有内存屏障做一综述。这将是一件不朽的功绩。但是,重要的是认识到这些指令在不同的硬件体系中迥异。下面的指令是连续写操作在多处理 Intel Xeon硬件上编译的结果。本文后面的所有汇编指令除非特殊声明否则都出自于Intel Xeon。

 1 0x03f8340c: push  %ebp        ;...55 
 2 0x03f8340d: sub  $0x8,%esp     ;...81ec0800 0000 
 3 0x03f83413: mov  $0x14c,%edi    ;...bf4c0100 00 
 4 0x03f83418: movb  $0x1,-0x505a72f0(%edi) ;...c687108d a5af01 
 5 0x03f8341f: mfence          ;...0faef0 
 6 0x03f83422: mov  $0x148,%ebp    ;...bd480100 00 
 7 0x03f83427: mov  $0x14d,%edx    ;...ba4d0100 00 
 8 0x03f8342c: movsbl -0x505a72f0(%edx),%ebx ;...0fbe9a10 8da5af 
 9 0x03f83433: test  %ebx,%ebx     ;...85db 
10 0x03f83435: jne  0x03f83460     ;...7529 
11 0x03f83437: movl  $0x1,-0x505a72f0(%ebp) ;...c785108d a5af01 
12 0x03f83441: movb  $0x0,-0x505a72f0(%edi) ;...c687108d a5af00 
13 0x03f83448: mfence          ;...0faef0 
14 0x03f8344b: add  $0x8,%esp     ;...83c408 
15 0x03f8344e: pop  %ebp        ;...5d 

上一页  1 2 3 4 5 6 7 8 9 10  下一页

Tags:内存 屏障 JVM

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接