Join()Lock()之间的根本区别

时间:2009-10-13 09:00:32

标签: c# multithreading

对于Join()和lock()的情况,一个线程可以在另一个之后执行。主要区别是什么?

2 个答案:

答案 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的对象锁。

前者用于帮助管理线程生存期,后者用于控制并发性。