【发布时间】:2010-10-27 13:16:50
【问题描述】:
到目前为止,我使用 lock(object) 构造来访问共享变量。 在阅读了有关 Interlocked 的 msdn 文章后
Increment 和 Decrement 方法递增或递减变量并将结果值存储在单个操作中。在大多数计算机上,递增变量不是原子操作,需要以下步骤:
将实例变量中的值加载到寄存器中。
增加或减少值。
将值存储在实例变量中。
如果不使用 Increment 和 Decrement,则执行完前两步后可以抢占线程。然后另一个线程可以执行所有三个步骤。当第一个线程恢复执行时,它会覆盖实例变量中的值,并且第二个线程执行的递增或递减的效果丢失。
我发现锁可能会使我的程序失败:)
我的决定正确吗?
p.s ssory 英语不好(
【问题讨论】:
标签: .net multithreading concurrency