4 Stimmen

C++ boost thread id und Singleton

Es tut mir leid, dass ich diese Woche so viele Fragen habe.

Ich nehme an, dass der Thread-Index, der von thread.get_id ist implementierungsspezifisch. Wird im Falle von pthreads der Index wiederverwendet? IE, wenn Thread 0 läuft und verbindet, ist Thread gestartet nachwords gehen, um eine andere ID haben?

der Grund, warum ich dies fragen, ist eine Notwendigkeit, Singleton-Muster mit einer Wendung zu implementieren: jeder Thread erhält seine eigene Instanz. Ich weiß, es klingt sehr verrückt, aber Threads steuern Hardware (Cuda), die keine gemeinsame Nutzung des Gerätespeichers erlaubt, auch auf Thread-Ebene.
Wie lässt sich ein solches Muster am besten umsetzen?

5voto

Logan Capaldo Punkte 38523

Für ein globales (Singleton), bei dem jeder Thread seine eigene Instanz erhält, verwenden Sie den lokalen Thread-Speicher. Boost hat thread_specific_ptr für diese.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X