对于Join()和lock()的情况,一个线程可以在另一个之后执行。主要区别是什么?
答案 0 :(得分:10)
Lock是一个监视器,用于保证一次只能执行1个线程。
lock(myobj)
{
// only 1 thread here
}
Join用于等待线程完成,然后继续执行。
anotherThread.Join();
// execution here only when anotherThread is complete
答案 1 :(得分:3)
Thread.Join()
等待退出的主题。 Monitor.Enter(obj)
(编译器如何表达lock
语句的条目)等待没有其他线程保持obj
的对象锁。
前者用于帮助管理线程生存期,后者用于控制并发性。