sas*_*alm 17 c++ qt reentrancy
Qt文档说明了线程安全性和重入性:
注意:如果Qt类打算由多个线程使用,则它们仅记录为线程安全的.如果函数未标记为线程安全或可重入,则不应在不同的线程中使用它.如果某个类未标记为线程安全或可重入,则不应从不同的线程访问该类的特定实例.
这似乎表明Qt中的每个函数和类都应该被认为是非重入和非线程安全的,除非明确说明.
但是,在文档中,QRect并且QPoint,例如,既没有提到线程安全性也没有提及重入性,但我发现很难相信它们不是.事实上,这个旧的讨论说它在文档中"缺乏":
这些类只是普通数据(一些原语),没有共享的结构化或静态数据,因此它们是可重入的.它们没有标记,我们的文档缺乏.
那么,我们应该如何知道某个函数是否可以重入?重入笔记是否仅为简单类省略,其显而易见性暗示了它?
我认为这个问题唯一安全的答案是查看源代码。显然 Qt 文档还不够。对于每个未记录的可重入类,应向 Qt 提交错误。
根据 Qt 对可重入性的定义,有两个标准来确定 Qt 类是否可重入:
访问单例类会违反 2。