首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >默认情况下使静态数据线程安全是什么意思?

默认情况下使静态数据线程安全是什么意思?
EN

Stack Overflow用户
提问于 2016-05-31 22:14:50
回答 1查看 202关注 0票数 0

我想以我理解线程同步原语作为我的问题的开头,我的问题不是如何使用它们。这只是对我从MSDN上读到的一项声明的澄清。

托管线程处理最佳实践页面的末尾指出,以下是重点之一:

默认情况下使静态数据(在Visual中共享)线程安全。

那是什么意思?这是否意味着有一种方法可以使静态数据线程安全,而无需使用任何线程同步代码?如果是这样的话,是怎么做的?

代码语言:javascript
复制
class Foo
{
  // How do you make this thread-safe without thread sync code?
  static int x;

  static void Do()
  {
    // This, I understand, is thread-safe, by default.
    int y;
  }
}
EN

回答 1

Stack Overflow用户

发布于 2016-05-31 22:21:46

感谢评论员们对这个问题的指导。我将此作为对任何可能有同样困惑的人的回答。

读下一行就可以清楚地看出,这意味着我们必须使用线程同步代码来确保静态数据的线程安全。

虽然我们还必须小心敏感的实例数据,这些数据可能能够适应多个线程的使用,但最好在我们为保护实例数据而编写的同步代码级别上达成折衷,因为这可能会对性能产生不利影响。

下一点内容如下:

默认情况下,不要使实例数据线程安全。添加锁以创建线程安全代码会降低性能,增加锁争用,并可能发生死锁。在常见的应用程序模型中,一次只有一个线程执行用户代码,从而最小化了对线程安全的需求。因此,默认情况下,.NET框架类库并不是线程安全的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37556507

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档