Python
Java
PHP
IOS
Android
Nodejs
JavaScript
Html5
Windows
Ubuntu
Linux
在并发创建线程之前读取修改的变量是否安全?
pseudocode for illustration int g 0 void fn if g 1 std cout lt lt hello lt lt std endl else std cout lt lt world lt lt s
c
Multithreading
memorybarriers
stdthread
memorymodel
在传播缓存行时,内存控制器如何保证原子的内存顺序?
我目前正在深入研究std atomics和C 内存模型 真正对我的思维模型有帮助的是 CPU 的存储和加载缓冲区的概念 它基本上是一个 fifo 队列 用于存储必须写入 L1 缓存或从 L1 缓存读取的数据 至少在英特尔架构中存在 据我所知
c
cpuarchitecture
atomic
stdatomic
memorymodel
是否可以在堆栈上创建类的实例?
我知道在 C 中你可以在堆栈上创建类的实例 例如 MyClass mc MyClass 8 2 或者像在堆上 MyClass mc new MyClass 8 2 你能在 C 中做同样的事情吗 我在 C 中创建类的唯一方法是newing i
c
heapmemory
newoperator
memorymodel
stackmemory
宽松的原子规则有什么(轻微)差异?
看到赫伯 萨特斯表现出色后talk about 原子武器 我有点困惑轻松原子例子 我随身携带了一个atomic in the C 内存模型 SC DRF 无数据竞争的顺序一致 在加载 读取时执行 获取 据我所知 对于负载 和存储 默认值是s
c
memorybarriers
memorymodel
stdatomic
relaxedatomics
数据缓存如何路由本例中的对象?
考虑图示的数据缓存架构 ASCII 艺术如下 CPU core A CPU core B Devices Cache A1 Cache B1 with DMA Cache 2 RAM
caching
cpuarchitecture
cpucache
DMA
memorymodel
C++11:memory_order_relaxed 和 memory_order_consume 之间的区别
我现在正在学习C 11内存顺序模型并想了解之间的区别memory order relaxed and memory order consume 具体来说 我正在寻找一个无法替代的简单示例memory order consume with m
c
C11
memorymodel
stdatomic
多线程程序中的 std::atomic
memory_order_relaxed VS 易失性 sig_atomic_t
Does volatile sig atomic t提供任何内存顺序保证吗 例如 如果我只需要加载 存储一个整数可以使用吗 例如 这里 volatile sig atomic t x 0 void f std thread t x 1 wh
c
Multithreading
volatile
memorymodel
stdatomic
具有释放/获取语义的易失性
从 Java 5 开始 volatile关键字具有释放 获取语义 以使副作用对其他线程可见 包括对非易失性变量 以这两个变量为例 int i volatile int v 注意i是一个常规的 非易失性变量 想象一下线程 1 执行以下语句 i
c
Java
volatile
memorymodel
javamemorymodel
Interlocked.CompareExchange 是否使用内存屏障?
我正在阅读乔 达菲 Joe Duffy 的帖子读写易失性和时效性 我试图理解帖子中最后一个代码示例的一些内容 while Interlocked CompareExchange ref m state 1 0 0 m state 0 whi
c
Multithreading
Optimization
volatile
memorymodel
为什么atomic.StoreUint32比sync.Once中的普通分配更受欢迎?
在阅读Go源码时 我对src sync once go中的代码有一个疑问 func o Once Do f func Note Here is an incorrect implementation of Do if atomic Comp
go
concurrency
atomic
memorymodel
释放-获取的传递性
正当我以为我已经掌握了原子知识时 我看到了另一篇文章 这是摘录自GCC wiki under 总体总结 Thread 1 Thread 2 Thread 3 y store 20 if x load 10 if y load 10 x st
c
memorybarriers
stdatomic
memorymodel
fetch_add(0, memory_order_relaxed/release) 到 mfence + mov 的转换合法吗?
论文N4455 没有健全的编译器会优化原子讨论编译器可以应用于原子的各种优化 在该部分下围绕原子进行优化 对于 seqlock 示例 它提到了在 LLVM 中实现的转换 其中fetch add 0 std memory order rele
c
LLVM
x8664
memorymodel
stdatomic
创建/加入线程时隐式同步
是什么minimal需要框架x考虑到创建 加入线程时隐含的同步 此代码的工作类型 std atomic volatile 没有什么 include
c
Multithreading
languagelawyer
memorymodel
在发布序列中使用原子读取-修改-写入操作
假设我创建了一个类型的对象Foo在线程 1 中并且希望能够在线程 3 中访问它 我可以尝试这样的事情 std atomic
c
Multithreading
C11
atomic
memorymodel
«
1
2
3