【发布时间】:2014-03-20 13:52:54
【问题描述】:
Qt 文档states this about thread-safety and reentrancy:
注意:仅当 Qt 类打算由多个线程使用时,它们才被记录为线程安全的。如果函数未标记为线程安全或可重入,则不应从不同的线程中使用它。如果一个类未标记为线程安全或可重入,则不应从不同线程访问该类的特定实例。
这似乎表明 Qt 中的每个函数和类都应该被认为是不可重入和非线程安全的,除非明确说明。
然而,在QRect 和QPoint 的文档中,例如,没有提到线程安全和重入,但我很难相信它们没有。事实上,this old discussion 在文档中说它是“缺乏”:
这些类只是普通数据(一些原语),没有共享的结构化或静态数据,因此它们是可重入的。我们的文档中没有将它们标记为此类。
那么,我们应该如何知道一个函数是否是可重入的?是否仅在简单类中省略了重入注释?
【问题讨论】:
标签: c++ qt reentrancy