相关疑难解决方法(0)

为什么在x86上对自然对齐的变量进行整数赋值?

我一直在读这篇关于原子操作的文章,它提到了32位整数赋值在x86上是原子的,只要该变量是自然对齐的.

为什么自然对齐确保原子性?

c c++ concurrency x86 atomic

28
推荐指数
2
解决办法
5386
查看次数

如何使用LOCK ASM前缀读取值?

我知道如何使用LOCK线程安全地增加一个值:

  lock inc     [J];
Run Code Online (Sandbox Code Playgroud)

但是我如何以线程安全的方式阅读[J](或任何值)?LOCK前缀不能与mov一起使用.如果我做以下事情:

  xor eax, eax;
  lock add eax, [J];
  mov [JC], eax;
Run Code Online (Sandbox Code Playgroud)

它在第2行引发错误.

x86 assembly locking thread-safety

6
推荐指数
1
解决办法
5649
查看次数

如何在x86 ASM中原子地移动64位值?

首先,我发现了这个问题:如何以原子方式读取x86 ASM中的值? 但它有点不同,在我的情况下,我想在32位应用程序中原子地分配一个浮点(64位双倍)值.

来自:"英特尔®64和IA-32架构软件开发人员手册,Volume3A"

奔腾处理器(以及更新的处理器)保证以下额外的内存操作将始终以原子方式执行:

读取或写入在64位边界上对齐的四字

实际上是否可以使用一些组装技巧?

x86 assembly thread-safety

3
推荐指数
1
解决办法
1013
查看次数

标签 统计

x86 ×3

assembly ×2

thread-safety ×2

atomic ×1

c ×1

c++ ×1

concurrency ×1

locking ×1