我在面试中被问到以下问题:
1)有两个线程:T1和T2。他们共享一个资源并使用 pthread_mutex 进行同步以避免死锁。你将如何设计你的代码,使得如果在 T1 进入临界区后发生任何段错误,T2 不会陷入死锁?
//T1 Code
try
{
pthread_mutex_lock(somelock);
....
/// work on shared memory
//What will happen if segfault happens here?
....
pthread_mutex_unlock(somelock);
} catch(...)
{
pthread_mutex_unlock(somelock);
// exception happens
}
我说我不知道答案。面试官遇到这种情况等我anss。
这种情况真的有什么设计可以避免死锁吗?
以上代码块仅供理解。我读了this .但还不清楚 提前致谢。
最佳答案
您可以使用信号处理程序捕获信号并根据需要处理资源。
我可以相信,根据他的暗示,面试官的意思是使用 RAII 惯用语——资源分配即初始化。
但我不确定这是否适用于信号...
关于c++ - 临界区段错误 - 避免死锁,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29990918/