我有一个关于在ACE框架中使用互斥锁进行同步的问题。 任务A已在计时器处理程序中注册。在任务A中调用函数foo。 foo中的Critical部分使用递归互斥锁进行保护。 foo函数使用的变量由handle_timeout使用(写/读)访问。这意味着我们需要保护它们。
我们有以下的伪代码
foo()
lock(recursive_mutex)
C.S
unlock(recursive_mutex)
handle_timeout()
{
lock(recursive_mutex)
C.S
unlock(recursive_mutex)
}
如果handle_timeout在foo释放锁之前发生,会发生死锁吗?
如果我们有一个具有最高优先级的任务B,则注册到另一个事件。如果在handle_timoeout时触发此事件,会发生什么? 我们是否会进行上下文切换和第二次启动处理?