Python
Java
PHP
IOS
Android
Nodejs
JavaScript
Html5
Windows
Ubuntu
Linux
为什么这个“std::atomic_thread_fence”起作用
首先我想谈一下我对此的一些理解 如有错误请指正 a MFENCE在x86中可以保证全屏障 顺序一致性可防止 STORE STORE STORE LOAD LOAD STORE 和 LOAD LOAD 重新排序 这是根据维基百科 https
c
x86
memorybarriers
stdatomic
假设没有非时间指令,“xchg”是否包含“mfence”?
我已经看过了这个答案 https stackoverflow com a 50279772 391161 and 这个答案 https stackoverflow com a 19099164 391161 但似乎都没有清楚明确地说明等价或
Multithreading
Assembly
x86
intel
memorybarriers
原子发布可以被“覆盖”吗?
说我有atomic
c
atomic
stdatomic
memorybarriers
std::mutex 会创建栅栏吗?
如果我锁定一个std mutex我总会得到一个记忆栅栏吗 我不确定这是否暗示或强迫你获得栅栏 Update 根据 RMF 的评论找到了这个参考资料 多线程编程和内存可见性 http en wikipedia org wiki Memory
c
Multithreading
mutex
memorybarriers
memorymodel
std::memory_order_seq_cst 的工作原理
我从以下位置获取了有关 std memory order seq cst 的示例 http en cppreference com w cpp atomic memory order http en cppreference com w c
c
C11
memorybarriers
memorymodel
stdatomic
屏障/栅栏以及获取、释放语义是如何在微架构上实现的?
很多问题以及文章 书籍 例如https mirrors edge kernel org pub linux kernel people paulmck perfbook perfbook 2018 12 08a pdf https mirr
x86
x8664
cpuarchitecture
memorybarriers
microarchitecture
使用 4 个线程获取/释放语义
我目前正在阅读 Anthony Williams 撰写的 C Concurrency in Action 他的清单之一显示了这段代码 他指出以下断言z 0可以开火 include
c
Multithreading
memorybarriers
memorymodel
stdatomic
并发互锁和读取是否需要内存屏障或锁定?
这是一个简单的问题 但是读完之后为什么需要内存屏障 https stackoverflow com questions 3493931 why do i need a memory barrier我对此很困惑 在下面的示例中 假设不同的线程
c
Multithreading
threadsafety
sharedmemory
memorybarriers
忙等待循环中是否需要内存屏障或原子操作?
考虑以下spin lock 实现 最初来自这个答案 https stackoverflow com a 32658335 3169754 void spin lock volatile bool lock for inserts an ac
c
Multithreading
gcc
memorybarriers
spinlock
除了提供必要的保证之外,硬件内存屏障是否还能使原子操作的可见性更快?
TL DR 在生产者 消费者队列中 放置不必要的 从 C 内存模型的角度来看 内存栅栏或不必要的强内存顺序是否有意义 以牺牲可能更差的吞吐量为代价获得更好的延迟 C 内存模型在硬件上执行 通过为更强的内存顺序设置某种内存栅栏 而不是在较弱的
c
x86
arm
cpuarchitecture
memorybarriers
您能否将具有更严格内存排序的原子加载存储拆分为单独的宽松加载存储以及内存屏障指令?
下面是用于跨线程数据同步的获取 释放语义的简单示例 thread 1 thread 2 data 100 flag store true std memory order release while flag load std memory
c
Multithreading
synchronization
atomic
memorybarriers
C++11 具有非原子变量的原子内存顺序
我不确定 c 11 中原子变量的内存排序保证如何影响对其他内存的操作 假设我有一个线程定期调用 write 函数来更新值 另一个线程调用 read 来获取当前值 是否能保证效果d value 之前不会看到效果a version 并且将在效果
c
Multithreading
C11
atomic
memorybarriers
C11 原子获取/释放和 x86_64 缺乏加载/存储一致性?
我正在努力理解 C11 标准的第 5 1 2 4 节 特别是释放 获取的语义 我注意到https preshing com 20120913 acquire and release semantics https preshing com
c
x8664
memorybarriers
memorymodel
stdatomic
线程安全类是否应该在其构造函数末尾有一个内存屏障?
当实现一个线程安全的类时 我是否应该在其构造函数末尾包含一个内存屏障 以确保任何内部结构在可以访问之前已完成初始化 或者消费者有责任在使实例可供其他线程使用之前插入内存屏障 简化问题 下面的代码中是否存在竞争危险 由于初始化和线程安全类的访
c
NET
Multithreading
parallelprocessing
memorybarriers
C++ 中的内存栅栏/屏障:boost 或其他库有它们吗?
这些天我正在阅读有关内存栅栏和屏障的内容 作为同步多线程代码和避免代码重新排序的一种方法 我通常在 Linux 操作系统下使用 C 进行开发 并且使用boost大量的库 但我找不到任何与之相关的类 你知道boost中是否存在栅栏的内存屏障或
Multithreading
boost
boostthread
memorybarriers
c++11 及更高版本中 mutex.lock() 和 .unlock() 的确切线程间重新排序约束是什么?
根据https en cppreference com w cpp atomic memory order https en cppreference com w cpp atomic memory order mutex lock and
c
C11
languagelawyer
mutex
memorybarriers
内存屏障和 TLB
内存屏障保证数据缓存的一致性 但是 它能保证TLB的一致性吗 我发现一个问题 在线程之间传递 MappedByteBuffer 时 JVM java 7 update 1 有时会因内存错误 SIGBUS SIGSEG 而崩溃 e g fin
Java
centOS
memorymappedfiles
TLB
memorybarriers
.NET Volatile.读/写和互锁范围
我已阅读螺纹手册 http www albahari com threading part4 aspx以及相关的 MSDN 页面和 SO问题 https stackoverflow com questions 6581848 memory
c
NET
Multithreading
memorybarriers
是否存在等于 C++11 中的 asm("" ::: "memory") 的编译器障碍?
我的测试代码如下 我发现只有memory order seq cst禁止编译器重新排序 include
c
C11
atomic
lockfree
memorybarriers
在 OpenCL 中,mem_fence() 与 Barrier() 相比有何作用?
Unlike barrier 我想我明白 mem fence 不影响工作组中的所有项目 OpenCL 规范指出 第 6 11 10 节 对于mem fence 命令加载和存储执行内核的工作项 所以它适用于single工作项 但同时 在第 3
opencl
GPGPU
memorybarriers
Barrier
memoryfences
1
2
3
4
»