线程支持

线程支持命令用于指定类或函数中多线程编程的支持级别。支持有三个级别:threadsafe(线程安全的)、reentrant(可重入的)和nonreentrant(非可重入的)。

默认为nonreentrant,即相关的类或函数不能被多个线程调用。Reentrantthreadsafe主要用于类。

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\nonreentrant

\reentrant

\reentrant 命令表示,只要每个函数调用引用其自己的数据,相关的类或函数就可以被多个线程同时调用。请参考示例

该命令必须单独占一行。

也参见\nonreentrant\threadsafe

非重入的

\nonreentrant命令表示相关的类或函数不能被多个线程调用。非重入是默认情况。

该命令必须单独占一行。

当一个类被标记为\reentrant\threadsafe时,可以使用这个命令在要排除的函数的\fn注释中标记函数为nonreentrant

另见\reentrant\threadsafe

© 2024 Qt公司有限公司。此处包含的文档贡献属于其各自的版权所有者。此处提供的文档是根据自由软件基金会发布的GNU免费文档许可版1.3的条款许可的。Qt及其相关标志是芬兰和/或其他国家的Qt公司有限公司的商标。所有其他商标均为其各自所有者的财产。