|
|
1
20
这转化为以下微观操作:
请注意,如果其他代理更新
如果你想保证这一点
对于更复杂的指令,除非它们支持
|
|
2
9
-你可以 假设您使用的程序语言是将一行看似简单的代码编译成一条汇编指令。此外,在某些架构上,您不能假设一个机器代码会原子地执行。
|
|
3
8
在过去的好日子里,它是。但今天,随着复杂的CPU、长时间运行的指令、超线程。..事实并非如此。一些CPU保证 一些 递增/递减指令是原子指令。原因是,它们非常适合非常简单的同步。
编辑: |
|
|
4
6
|
|
|
5
4
因此,计数器++不会是汇编程序中的单个指令(只是忽略后增量部分)。它至少有三条指令:将计数器变量加载到寄存器、递增寄存器、将寄存器加载回计数器。这仅适用于x86架构。
|
|
6
3
|
|
|
7
3
|
|
|
8
2
在大多数情况下, 不 。事实上,在x86上,您可以执行指令
. 内存传输也不可能在一个周期内完成! |
|
|
9
1
这可能不是你问题的实际答案,但(假设这是C#或其他.NET语言)如果你愿意的话
请参阅其他答案,了解许多不同的原因/方式的实际信息
|
|
|
10
-1
在许多其他处理器上,存储系统和处理器之间的分离更大。(通常这些处理器可以是小字节序或大端序,具体取决于内存系统,如ARM和PowerPC),如果内存系统可以重新排序读取和写入,这也会对原子行为产生影响。 http://en.wikipedia.org/wiki/Memory_barrier ) 因此,简而言之,虽然原子指令在intel上就足够了(具有相关的锁前缀),但在非intel上必须做更多的工作,因为内存I/O的顺序可能不同。 当将“无锁”解决方案从英特尔移植到其他架构时,这是一个已知的问题。
|
|
|
11
-3
|
|
|
deen · 从递归方法调用另一个类的方法:Java 8 年前 |
|
|
nd97 · 读取Bash中可能删除的文件 8 年前 |
|
|
je123 · $.post()可能的竞争条件;重定向问题 8 年前 |
|
|
zackster7171 · C程序在GDB中工作,但不正常 8 年前 |
|
|
Di Wang · 单处理器环境可以防止竞争条件吗? 8 年前 |
|
|
yun · USB音频缓冲区欠载 8 年前 |