Ich benutze parallele Erweiterungen ziemlich stark und ich habe gerade einen Fall gefunden, in dem die Verwendung von lokalem Thread-Speicher sinnvoll sein könnte, um die Wiederverwendung von Objekten durch Arbeitsthreads zu ermöglichen. Als solches betrachtete ich das ThreadStatic-Attribut, das ein statisches Feld/eine statische Variable mit einem eindeutigen Wert pro Thread markiert.Verwenden paralleler Erweiterungen mit ThreadStatic-Attribut. Konnte es Speicher verlieren?
Es scheint mir, dass es unklug wäre, PE mit dem ThreadStatic-Attribut zu verwenden, ohne dass die Wiederverwendung von Threads durch PE garantiert wäre. Das heißt, wenn Threads bis zu einem gewissen Grad erstellt und zerstört werden, bleiben die Variablen (und somit die Objekte, auf die sie verweisen) für eine unbestimmte Zeit im lokalen Thread-Speicher und verursachen so ein Speicherleck. Oder vielleicht ist der Fadenspeicher an die Fäden gebunden und entsorgt, wenn die Fäden liegen? Aber dann haben Sie möglicherweise noch Threads in einem Pool, die lange gelebt werden und lokale lokalen Speicher aus verschiedenen Codeteilen ansammeln, für die die Threads verwendet werden.
Gibt es einen besseren Ansatz, lokalen Thread-Speicher mit PE zu erhalten?
Vielen Dank.
Die korrekte Terminologie ist "im Ruhestand" statt "zerstört" in Bezug auf Threads, die aus dem Pool entfernt werden und dann ihre Stacks verschieben. –