Python
Java
PHP
IOS
Android
Nodejs
JavaScript
Html5
Windows
Ubuntu
Linux
现代 x86 硬件不能将单个字节存储到内存中吗?
说到 C 的并发内存模型 Stroustrup 的C 编程语言 第 4 版 第 1 节 41 2 1 说 就像大多数现代硬件一样 机器无法加载或存储小于单词的任何内容 然而 我的 x86 处理器已经有几年的历史了 它可以并且确实存储小于单词
c
Assembly
concurrency
x86
memorymodel
memory_order_seq_cst 和 memory_order_acq_rel 有什么不同?
对于两者来说 存储是释放操作 加载是获取操作 我知道memory order seq cst旨在对所有操作施加额外的总排序 但我无法构建一个示例 如果所有操作都不是这种情况memory order seq cst被替换为memory ord
c
C11
memorymodel
stdatomic
C++20 内存模型中释放序列定义的更改有何影响?
考虑这个程序 Initially std atomic
c
concurrency
C20
atomic
memorymodel
C++11内存_顺序_获取和内存_顺序_释放语义?
http en cppreference com w cpp atomic memory order http en cppreference com w cpp atomic memory order以及其他 C 11 在线参考 将 me
c
mutex
atomic
memorymodel
stdatomic
std::mutex 会创建栅栏吗?
如果我锁定一个std mutex我总会得到一个记忆栅栏吗 我不确定这是否暗示或强迫你获得栅栏 Update 根据 RMF 的评论找到了这个参考资料 多线程编程和内存可见性 http en wikipedia org wiki Memory
c
Multithreading
mutex
memorybarriers
memorymodel
什么是“顺序一致的执行,没有数据竞争”?
In JLS 17 4 5 订单前发生 http docs oracle com javase specs jls se7 html jls 17 html jls 17 4 5 它说 当且仅当所有顺序一致的执行都没有数据争用时 程序才能正
Java
memorymodel
GPU 上非原子写入的保证很弱吗?
OpenCL 和 CUDA 包含原子操作已有好几年了 尽管显然并非每个 CUDA 或 OpenCL 设备都支持这些操作 但是 我的问题是关于由于非原子写入而 共存 种族的可能性 假设网格中的多个线程都写入全局内存中的同一位置 我们是否可以保
CUDA
opencl
atomic
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
非平凡可复制类型的 C++ 值表示
C 标准的当前草案 2019 年 3 月 有以下段落 basic types p 4 强调我的 T 类型对象的对象表示是 T 类型对象占用的 N 个 unsigned char 对象的序列 其中 N 等于 sizeof T T 类型对象的值
c
languagelawyer
memorymodel
使用 4 个线程获取/释放语义
我目前正在阅读 Anthony Williams 撰写的 C Concurrency in Action 他的清单之一显示了这段代码 他指出以下断言z 0可以开火 include
c
Multithreading
memorybarriers
memorymodel
stdatomic
std::memory_order 和指令顺序,澄清
这是一个后续问题this one https stackoverflow com questions 59626494 understanding memory order acquire and memory order release
c
C11
atomic
memorymodel
stdatomic
此信封实现是否正确使用 C++11 原子?
我编写了一个简单的 信封 类 以确保我正确理解 C 11 原子语义 我有一个标头和一个有效负载 编写器清除标头 填充有效负载 然后用递增的整数填充标头 这个想法是 读取器然后可以读取标头 memcpy 出有效负载 再次读取标头 如果标头相同
c
Multithreading
threadsafety
memorymodel
stdatomic
C11 原子获取/释放和 x86_64 缺乏加载/存储一致性?
我正在努力理解 C11 标准的第 5 1 2 4 节 特别是释放 获取的语义 我注意到https preshing com 20120913 acquire and release semantics https preshing com
c
x8664
memorybarriers
memorymodel
stdatomic
为什么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
.NET 多线程、易失性和内存模型
假设我们有以下代码 class Program static volatile bool flag1 static volatile bool flag2 static volatile int val static void Main s
c
NET
volatile
memorymodel
memory_order_relaxed 如何增加智能指针中的原子引用计数?
考虑以下摘自 Herb Sutter 关于原子的演讲的代码片段 smart ptr 类包含一个名为 control block ptr 的 pimpl 对象 其中包含引用计数refs Thread A smart ptr copy ctor
c
Multithreading
C11
memorymodel
relaxedatomics
Java内存模型:编译器重新排列代码行
众所周知 Java 语言允许编译器重新排列已编译代码行 只要重新排序对代码语义没有影响即可 然而 编译器只需关心语义 如从当前线程 如果这种重新排序影响多线程情况下的语义 通常会导致并发问题 内存可见性 我的问题 通过允许编译器使用这个 f
Java
memory
memorymodel
如何使用带有 C++ 内存模型的 Intel TSX?
我认为 C 尚未涵盖任何类型的事务内存 但 TSX 仍然可以以某种方式适合使用 as if规则 转变为由 C 内存模型控制的东西 那么 成功的 HLE 操作或成功的 RTM 事务会发生什么 说 存在数据竞争 但没关系 并没有多大帮助 因为它
c
languagelawyer
memorymodel
inteltsx
C++ 标准:宽松的原子存储可以提升到互斥锁之上吗?
标准中是否有任何措辞可以保证原子的宽松存储不会被提升到互斥体的锁定之上 如果不是 是否有任何措辞明确表明编译器或 CPU 这样做是合理的 例如 采用以下程序 可能会使用 acq rel 进行foo has been set并避免锁定 和 或
c
mutex
memorymodel
stdatomic
relaxedatomics
std::atomic 内存屏障可用于在线程之间传输非原子数据吗?
以下代码是否符合标准 或者可以使其合规而不进行x原子或volatile 这类似于之前的一个问题 https stackoverflow com questions 19680757 in c11 can stdatomic be used
c
C11
languagelawyer
stdatomic
memorymodel
1
2
3
»