关键部分的段错误 - 避免死锁

segfault in critical section - avoiding deadlock

本文关键字:死锁 错误 键部 段错误      更新时间:2023-10-16

我在面试中被问到以下问题:

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
}

我说我不认识。 面试官到达这种情况等待我的ans。

在这种情况下,真的有什么设计可以避免死锁吗?

上面的代码块只是为了理解。我读了这个。但不清楚提前谢谢。

您可以使用信号处理程序捕获信号并根据需要处理资源。

我可以相信,在他的暗示下,面试官的意思是使用 RAII 习语 - 资源分配是初始化。

但我不确定这是否适用于信号...