Sur cette page

Support de fil

Les commandes de prise en charge des threads permettent de spécifier le niveau de prise en charge de la programmation multithread dans une classe ou une fonction. Il existe trois niveaux de support : threadsafe, reentrant et nonreentrant.

La valeur par défaut est nonreentrant, ce qui signifie que la classe ou la fonction associée ne peut pas être appelée par plusieurs threads. Reentrant et threadsafe sont des niveaux principalement utilisés pour les classes.

Reentrant signifie que toutes les fonctions de la classe référencée peuvent être appelées simultanément par plusieurs threads, à condition que chaque invocation des fonctions fasse référence à des données uniques. Alors que threadsafe signifie que toutes les fonctions de la classe référencée peuvent être appelées simultanément par plusieurs threads, même si chaque invocation fait référence à des données partagées.

Lorsqu'une classe est marquée \reentrant ou \threadsafeles fonctions de cette classe peuvent être marquées nonreentrant à l'aide de la commande \nonreentrant à l'aide de la commande

Exemple de commande

/*!
    \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 génère une notification lorsqu'une classe est déclarée réentrante et énumère les exceptions (les fonctions déclarées non réentrantes). Un lien vers la documentation générale sur la réentrance et la sécurité des threads est inclus. En outre, un avertissement,"Warning: Cette fonction n'est pas réentrante", est généré dans la documentation des fonctions non réentrantes.

QDoc génère la même notification et les mêmes avertissements lorsqu'une classe est déclarée threadsafe.

Pour plus d'informations, voir la documentation générale sur la réentrance et la sécurité des threads.

Commandes

\threadsafe

La commande \threadsafe inclut une ligne dans la documentation pour indiquer que la classe ou la fonction associée est threadsafe et peut être appelée simultanément par plusieurs threads, même si les invocations séparées font référence à des données partagées.

La commande doit être placée sur sa propre ligne.

La documentation générée par cette commande sera similaire à celle générée pour la commande \reentrant La documentation générée par cette commande sera similaire à celle générée pour la commande Voir l'exemple ci-dessus dans l'introduction.

Voir aussi \reentrant et \nonreentrant.

\reentrant

La commande \reentrant indique que la classe ou la fonction associée peut être appelée simultanément par plusieurs threads, à condition que chaque invocation fasse référence à ses propres données. Voir l'exemple ci-dessus.

La commande doit être placée sur sa propre ligne.

Voir aussi \nonreentrant et \threadsafe.

\nonreentrant

La commande \nonreentrant indique que la classe ou la fonction associée ne peut pas être appelée par plusieurs threads. Nonreentrant est le cas par défaut.

La commande doit être placée sur sa propre ligne.

Lorsqu'une classe est marquée \reentrant ou \threadsafeles fonctions de cette classe peuvent être marquées nonreentrant en utilisant cette commande dans le commentaire \fn des fonctions à exclure.

Voir aussi \reentrant et \threadsafe.

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.