【发布时间】:2016-10-12 07:08:02
【问题描述】:
在一个类中我有两种方法:
- Method1(): 无效
- Method2(): 无效
这个类可以被多个线程访问。 我怎样才能意识到,如果“thread1”调用“Method1”,“thread2”正在“Method2”或“Method1”中等待。这个逻辑也应该起作用,如果“thread2”正在调用“Method2”,那么“thread1”正在“Method1”或“Method2”中等待
我的想法是这样的:
private object _lock = new object();
void Method1() {
lock(_lock){
//TODO: do something
}
}
void Method2() {
lock(_lock){
//TODO: do something
}
}
这行得通吗?
【问题讨论】:
-
您想知道是否有其他线程正在等待,或者您想确保在任何给定时间只有一个线程可以运行任一方法?跨度>
-
我想确保只有一个线程可以运行这两种方法。
-
那你的方法没问题。
标签: c# multithreading locking