我有一个 Qt 程序,其中包含:
- 许多 Qt信号槽对,用于实现一些套接字编程。
- 执行某些文件操作的系统调用
- 一些 Posix 消息队列代码,其中,进程等待一些消息被写入队列,读取它并处理。
我面临两个问题:
一世。有时,当进程在队列中等待读取某些消息时,函数mq_receive
根据文档返回的值会转换为消息Interrupted system call
。
ii. 有时,当进程使用系统调用执行文件操作时,应用程序崩溃。
现在我在这里阅读了如何使用TEMP_FAILURE_RETRY
宏来重试失败的调用。
Q1。我的两个问题背后的问题是否与我使用 Qt 信号/插槽机制的原因相同?
Q2。如果是这样,是TEMP_FAILURE_RETRY
处理这种情况的唯一好/标准方法吗?还是 Qt 提供了其他方法?
Q3。Qt 生成的信号是否会导致其他原语出现问题?为什么它只发生在消息队列和系统调用而不是其他 C++ 原语中?
有人可以发布一些文章/书籍的链接,在那里我可以理解信号/例程/系统调用如何以及为什么会导致彼此之间出现问题?我无法弄清楚我要搜索/搜索的确切关键字是什么?