相关疑难解决方法(0)

我什么时候应该使用Lazy <T>?

我发现这篇文章是关于Lazy:C#4.0中的懒惰 - 懒惰

使用Lazy对象获得最佳性能的最佳实践是什么?有人能指出我在实际应用中的实际用途吗?换句话说,我什么时候应该使用它?

.net c# lazy-evaluation

312
推荐指数
6
解决办法
12万
查看次数

我应该*始终*同步访问从多个线程使用的所有双字段/属性/变量?

注意我倾向于编写无锁代码,所以我尽可能避免任何类型的锁.相反,我只是使用while(true)循环,因为我有很多CPU功率.

根据http://msdn.microsoft.com/en-us/library/aa691278%28VS.71%29.aspx double变量更新不是原子的.

我关心两个问题:

  • 如果一个线程修改字段或属性的变量,而另一个线程读取它在同一时间,我想要么以前的或新的价值,但我不希望收到一些奇怪的事情.即如果一个线程从5.5更改为15.15我希望在另一个线程中有这两个数字中的一个,但不是5.15或15.5或其他任何东西.
  • 如果一个线程已经更新了值,另一个线程在此之后读取它我想要接收最新的,最新的值.我认为volatile关键字可以帮助解决这个问题,但似乎不能,因为"Volatile不能保证值的新鲜度.它会阻止一些优化,但不能保证线程同步." 如上所述是c#原始数组volatile?

问题:

  • 我是否正确,如果没有同步,可能会出现这两个问题?
  • 如果你能给我一些简短的例子,证明没有同步它就行不通 - 那会很好
  • 我应该如何访问双字段或变量或属性以始终具有真正的最新值?"同步"会保证"新鲜度"吗?最快的方法是什么?什么螺旋锁?

目前我在我的程序中使用了很多doubledecimal变量/字段/属性,几乎每个都工作正常,所以我真的很困惑,因为我从不同的线程访问它们没有任何同步,这只是工作...但现在我在想可能最好用float"内置同步化"

c# synchronization

5
推荐指数
1
解决办法
1044
查看次数

标签 统计

c# ×2

.net ×1

lazy-evaluation ×1

synchronization ×1