Auf dieser Seite

Thread-Unterstützung

Die Befehle zur Thread-Unterstützung dienen dazu, den Grad der Unterstützung für Multithread-Programmierung in einer Klasse oder Funktion festzulegen. Es gibt drei Unterstützungsstufen: „ threadsafe “, „ reentrant “ und „ nonreentrant “.

Die Standardeinstellung ist „ nonreentrant “, was bedeutet, dass die zugehörige Klasse oder Funktion nicht von mehreren Threads aufgerufen werden kann. „ Reentrant “ und „ threadsafe “ sind Stufen, die in erster Linie für Klassen verwendet werden.

Reentrant bedeutet, dass alle Funktionen in der referenzierten Klasse gleichzeitig von mehreren Threads aufgerufen werden können, vorausgesetzt, dass jeder Aufruf der Funktionen auf eindeutige Daten verweist. „ threadsafe “ bedeutet hingegen, dass alle Funktionen in der referenzierten Klasse gleichzeitig von mehreren Threads aufgerufen werden können, selbst wenn jeder Aufruf auf gemeinsam genutzte Daten verweist.

Wenn eine Klasse als \reentrant oder \threadsafenonreentrant, können Funktionen dieser Klasse mithilfe des \nonreentrant Befehl als „xml-ph-0000@deepl.internal“ gekennzeichnet werden.

Beispiel

/*!
    \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 generiert eine Benachrichtigung, wenn eine Klasse als reentrant deklariert wird, und listet die Ausnahmen (die als nicht reentrant deklarierten Funktionen) auf. Es wird ein Link zur allgemeinen Dokumentation über Reentrancy und Thread-Sicherheit eingefügt. Zudem wird in der Dokumentation der nicht-reentranten Funktionen die Warnung„Warnung: Diese Funktion ist nicht reentrant.“ ausgegeben.

QDoc generiert denselben Hinweis und dieselben Warnungen, wenn eine Klasse als threadsicher deklariert wird.

Weitere Informationen finden Sie in der allgemeinen Dokumentation zu Reentrancy und Thread-Sicherheit.

Befehle

\threadsafe

Der Befehl „ \threadsafe “ fügt der Dokumentation eine Zeile hinzu, die angibt, dass die zugehörige Klasse oder Funktion threadsicher ist und von mehreren Threads gleichzeitig aufgerufen werden kann, selbst wenn separate Aufrufe auf gemeinsam genutzte Daten verweisen.

Der Befehl muss in einer eigenen Zeile stehen.

Die mit diesem Befehl generierte Dokumentation ähnelt derjenigen, die für den Befehl \reentrant Befehl. Siehe das obige Beispiel in der Einleitung.

Siehe auch \reentrant und \nonreentrant.

\reentrant

Der Befehl „ \reentrant “ gibt an, dass die zugehörige Klasse oder Funktion von mehreren Threads gleichzeitig aufgerufen werden kann, vorausgesetzt, jeder Aufruf greift auf eigene Daten zu. Siehe das obige Beispiel.

Der Befehl muss in einer eigenen Zeile stehen.

Siehe auch \nonreentrant und \threadsafe.

\nonreentrant

Der Befehl „ \nonreentrant “ gibt an, dass die zugehörige Klasse oder Funktion nicht von mehreren Threads aufgerufen werden kann. „Nonreentrant“ ist der Standardfall.

Der Befehl muss in einer eigenen Zeile stehen.

Wenn eine Klasse als \reentrant oder \threadsafenonreentrant, können Funktionen in dieser Klasse mit diesem Befehl im \fn Kommentar der auszuschließenden Funktionen mit diesem Befehl als „xml-ph-0000@deepl.internal“ gekennzeichnet werden.

Siehe auch \reentrant und \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.