Git   发布时间:2022-05-05  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了如果一个线程死在关键部分内会发生什么?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

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

在Windows上相当于PTHREAD_MUTEX_INITIALIZER?

断言当前线程不保存CRITICAL_SECTION锁

自定义的linux内核系统调用中强制执行代码

在Windows上inputCriticalCritical和CRITICAL_SECTION

在Windows上互斥,临界区等的成本

来自MSDN:

如果线程在拥有关键部分的所有权时终止,则临界部分的状态是未定义的。

资料来源: http : //msdn.microsoft.com/en-us/library/windows/desktop/ms682608(v=vs.85).aspx

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

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

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

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

大佬总结

以上是大佬教程为你收集整理的如果一个线程死在关键部分内会发生什么?全部内容,希望文章能够帮你解决如果一个线程死在关键部分内会发生什么?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: