线程支持
线程支持命令用于指定类或函数中多线程编程的支持级别。支持有三个级别:threadsafe
(线程安全的)、reentrant
(可重入的)和nonreentrant
(非可重入的)。
默认为nonreentrant
,即相关的类或函数不能被多个线程调用。Reentrant
和threadsafe
主要用于类。
Reentrant
意味着在引用的类中,所有函数都可以被多个线程同时调用,前提是每个函数调用引用的数据是唯一的。而 threadsafe
意味着一个类中的所有函数可以由多个线程同时调用,即使每个调用引用的是共享数据。
当一个类被标记为 \reentrant 或 \threadsafe 时,可以使用 \nonreentrant 命令将类中的函数标记为 nonreentrant
。
示例
/*! \class QLocale \brief The QLocale class converts between numbers and their string representations in various languages. \reentrant \ingroup i18n \ingroup text QLocale is initialized with a language/country pair in its constructor and offers number-to-string and string-to-number conversion functions similar to those in QString. ... \nonreentrant Sets the global default locale to \a locale. These values are used when a QLocale object is constructed with no arguments. If this function is not called, the system's locale is used. \warning In a multithreaded application, the default locale should be set at application startup, before any non-GUI threads are created. \sa system(), c() */ void QLocale::setDefault(const QLocale &locale) { default_d = locale.d; }
当声明一个类为可重入时,QDoc 会生成一个通知,并列出异常(声明为非可重入的函数)。同时包括对重入性和线程安全性的一般文档链接。此外,在非可重入函数的文档中会生成警告 "警告: 此函数不可重入。
当声明一个类为线程安全时,QDoc 将会生成相同的通知和警告。
有关更多信息,请参见重入性和线程安全性的通用文档。
命令
\threadsafe
\threadsafe 命令在文档中加入一行,表明相关的类或函数是线程安全的,并且可以在多个线程中同时调用,即使不同的调用引用的是共享数据。
该命令必须单独占一行。
从这个命令生成的文档将与\reentrant命令生成的文档类似。请参考简介中的示例。
\reentrant
\reentrant 命令表示,只要每个函数调用引用其自己的数据,相关的类或函数就可以被多个线程同时调用。请参考示例。
该命令必须单独占一行。
非重入的
\nonreentrant命令表示相关的类或函数不能被多个线程调用。非重入是默认情况。
该命令必须单独占一行。
当一个类被标记为\reentrant或\threadsafe时,可以使用这个命令在要排除的函数的\fn注释中标记函数为nonreentrant
。
© 2024 Qt公司有限公司。此处包含的文档贡献属于其各自的版权所有者。此处提供的文档是根据自由软件基金会发布的GNU免费文档许可版1.3的条款许可的。Qt及其相关标志是芬兰和/或其他国家的Qt公司有限公司的商标。所有其他商标均为其各自所有者的财产。