如果我已经正确理解你应该实现锁定以防止并发问题,从而失去多线程的所有好处。
以下文章
以示例描述了这一点。但是我无法理解这是如何工作的,因为没有锁定。
谢谢&最好的问候 - 马蒂
答案 0 :(得分:2)
并发问题通常只在您必须处理更改状态时才会出现。如果您正在创建一个简单地提供数据并且不负责处理状态更改的Web服务,那么此配置可能是一个不错的选择。
答案 1 :(得分:2)
锁定不会让您“失去多线程的所有好处”。
如果您编写如下代码:
lock (shared_object)
{
// do everything here
return value;
}
然后是的,您刚刚导致并发应用程序变为同步(并且等待锁定的浪费线程)。但是您不必编写代码来使其成为线程安全的。
通常,只有少数关键部分实际需要锁定。例如,在链接的文章中,“i”是唯一的共享变量,因此使线程安全所需的只是使用var local_i = Interlocked.Increment(ref i);
。
这是一个微不足道的例子,所以当然看起来就像你没有获得任何东西一样。在现实世界的场景中,您将做一些不需要同步的事情,并且可以从并发中获益。