2013-09-28 37 views
1

这是场景。我们有很多线程访问受关键部分保护的代码段,从而确保一次只有一个线程可以访问该部分。现在的问题是,如果一个线程死在临界区内会发生什么?应用程序是否挂起?或者有一些锁定将被释放的方式?如果某个线程死于临界区域内会发生什么情况?

回答

1

您将不得不定义“死亡”。

你的意思是说,它通过错误的内存或其他访问错误?然后整个过程由操作系统抛出。

你的意思是线程被终止了(通过退出或由其他线程终止它)?那么你遇到了麻烦,因为包括线程终止在内的所有事情都已正确执行,所以等待临界区的所有线程都将永久停留。

你是说线程进入无限循环?我不确定Windows如何处理这种情况,但有两种策略:操作系统会假设“一切似乎运行正常,所以我应该远离”,否则将会有一个系统范围的CPU配额, OS终止进程。只有进程(线程在其中)可以导致单个线程终止,所有其他机制将抛出整个进程。

+0

我的意思是第二个选项,它要么退出或者其他某个线程终止它。 – Ram

相关问题