Frage

Ich bin mit ACE-Threads und muß jeden Thread sein eigenes int Mitglied haben. Ist das möglich?

War es hilfreich?

Lösung

ACE nennt dies "Thread Specific Storage". Check this out: ACE_TSS . Das ist alles, was ich darüber weiß, sorry kann nicht mehr helfen.

Die Wikipedia-Seite für thread-lokale Speicher sagt, daß es ein pThreads Weg zu tun dies auch.

Andere Tipps

Die Plattform spezifisch. Fenster zum Beispiel sollten Sie __declspec( thread ) . Der Compiler nutzen die TLS API shouldn Sie (TlsAlloc, TlsFree und Freunde), und auf Win32 immer leise Sie verwenden FLS (Fiber Local Storage) anstelle von TLS, aber die TLS-API wird Umleitung sowieso auf jedem modernen Win32-Version FLS.

Ja. Sie können die ACS_TSS<type> Vorlage verwenden, die für „Thread spezifische Speicher“ ausgelegt ist. (Dh lokale Variablen Gewinde)

Weitere Informationen finden Sie in den docs auf ACE_TSS .

GCC unterstützt direkt TLS für einige Ziele . Sie können das GCC-spezifische __thread Schlüsselwort verwenden Thread-lokalen Variablen für die Definition (muss statisch oder global sein).

libace selbst eingebaut lokalen Thread-Sachen hat, können Sie die Dokumentation und Blick auf die Beispielcode

Es gibt keine Möglichkeit zu haben ACE_TSS den Anfangswert für alle Threads festgelegt; Sie können ganz einfach, obwohl der Ausgangswert nur nach der Eingabe in Thread-Funktion gesetzt.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top