我有一个从多个线程调用的方法.每个线程都有自己的类实例.什么是同步访问代码最直接的方法?
我不能只用lock(obj)其中obj的一个实例成员,但它足以只需要声明obj的类静态?所以对该方法的所有调用都将锁定在同一个对象上?一个简单的说明如下:
class Foo
{
static object locker = new object();
public void Method()
{
lock(locker)
{
//do work
}
}
}
Run Code Online (Sandbox Code Playgroud)
编辑:这位//do work正在写入数据库.为什么我需要序列化写入需要3个页面来解释这个特定的实例,我真的不想重温所有引导我到这一点的细节.我所要做的就是确保每个记录在写下一个记录之前完成了写作.
当每个线程都有自己的实例时,为什么需要任何同步?保护共享的资源,不要担心非共享状态.这会自动帮助您找到锁定对象的最佳位置.如果它是对象共有的静态成员,那么你确实也需要一个静态锁定对象.
| 归档时间: |
|
| 查看次数: |
1983 次 |
| 最近记录: |