Ear*_*rlz 3 .net c# concurrency multithreading locking
我有一个"唯一"类型的整数.我这样使用它:
int unique=0;
public int GetUniqueId()
{
return unique++;
}
Run Code Online (Sandbox Code Playgroud)
我知道我有点偏执,但这是一个原子操作,还是需要某种形式的锁?此函数将用于极其并发的类中.
没有; 这显然不是原子的.
x++编译为三个单独的指令(加载,增量,存储),可以被其他线程中断.
如果这将在多个线程上运行,则应该调用Interlocked.Increment(ref unique)(这是原子的).
此调用比常规增量慢一些,比完全锁定快得多.
| 归档时间: |
|
| 查看次数: |
179 次 |
| 最近记录: |