Skip to content

Instantly share code, notes, and snippets.

@nagisa
Created February 27, 2019 00:22
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save nagisa/1dfde0f81366c622e30400678eb4d221 to your computer and use it in GitHub Desktop.
Save nagisa/1dfde0f81366c622e30400678eb4d221 to your computer and use it in GitHub Desktop.
# seqcst store/load:
data memory barrier
store/load
data memory barrier
# acquire load:
data memory barrier
load
# release store:
store
data memory barrier
# relaxed store/load:
store/load
@nagisa
Copy link
Author

nagisa commented Feb 27, 2019

Acquire before release

core 1 view of memory core 2 view of memory global view of memory core 1 core 2
1 1 1 dmb ...
1 2 1 load store 2
1 2 2 // 1 is loaded dmb
1 2 2

Release and acquire

core 1 view of memory core 2 view of memory global view of memory core 1 core 2
2 1 1 store 2 ...
2 2 2 dmb dmb
2 2 2 load
2 2 2 // 2 is loaded

Acquire at the same time as Release

core 1 view of memory core 2 view of memory global view of memory core 1 core 2
2 1 1 store 2 dmb
2 1 2 dmb load
2 1 2 // 1 is loaded

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment