Sur cette page

Assistance sur le fil de discussion

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 prise en charge : 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. Les niveaux « Reentrant » et « threadsafe » sont 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 appel de ces fonctions fasse référence à des données uniques. Tandis 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 lorsque chaque appel fait référence à des données partagées.

Lorsqu’une classe est marquée \reentrant ou \threadsafe, les fonctions de cette classe peuvent être marquées comme « nonreentrant » à l’aide de la \nonreentrant commande.

Exemple

/*!
    \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 répertorie 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. De plus, un avertissement, «Avertissement: cette fonction n'est pas réentrante. », est généré dans la documentation des fonctions non réentrantes.

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

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

Commandes

\threadsafe

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

La commande doit figurer sur une ligne distincte.

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

Voir également \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 figurer sur une ligne distincte.

Voir également \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. Par défaut, elle est non réentrante.

La commande doit figurer sur une ligne distincte.

Lorsqu’une classe est marquée \reentrant ou \threadsafe, les fonctions de cette classe peuvent être marquées comme « nonreentrant » à l’aide de cette commande dans le \fn commentaire 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.