【发布时间】:2015-08-25 14:14:01
【问题描述】:
我正在阅读这篇stackoverflow 帖子,其中给出了示例代码:
static void modifySharedResource(SomeClass sc)
{
//do something
lock (_lock)
{
//where sc is modified
}
}
我很好奇,为什么这个静态方法需要锁,这个示例中的静态方法是线程安全的吗?
我也看过这个post,但我没看懂答案。
谁能提供更多关于我的问题的详细信息,谢谢!
【问题讨论】:
-
看起来像单身人士?
-
一个方法是否是线程安全的取决于它是否访问共享资源(例如静态变量,..)。与方法是否静态无关
-
一些其他方法当前可能正在作用于对象
sc。在这两个地方使用锁可确保这些操作不会同时发生。 -
@Jonesopolis 通常,此方法的调用者有责任确保在该线程运行时所提供的参数不会在另一个线程中被操作。
标签: c# .net multithreading