【发布时间】:2019-05-23 13:41:15
【问题描述】:
我正在开发一个使用 QSerialPort 通过 uart 接收数据的应用程序。在这个应用程序中,我使用了一个写入文件的日志函数。在写入文件之前,应用程序会锁定一个互斥锁,而在写入文件之后,它会解锁互斥锁。在互斥锁和解锁之间,我不再调用日志函数。
当然,来自串口的数据是异步到达的,它会触发一个信号和一个处理数据的槽。在处理数据的这个函数中,我再次调用 log 函数。
我没有在我的应用程序中使用多线程,据我所知插槽是在同一个线程中调用的。
问题是:当来自 QSerialPort 的数据恰好在 log 函数中的 mutex 被锁定后到达时,单线程是否会死锁? (这意味着同一个互斥锁的双重锁定 - 假设我们不使用递归互斥锁)
是否有关于此类主题的良好知识来源?
【问题讨论】: