GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Haben Threads einen bestimmten Haufen?

Standardmäßig hat C nur einen einzigen Heap.

Einige Thread-fähige Zuordner partitionieren den Heap jedoch so, dass jeder Thread seinen eigenen Bereich zum Zuordnen hat. Die Idee ist, dass die Heap-Skalierung dadurch besser werden sollte.

Ein Beispiel für einen solchen Heap ist Hoard.


Nein. Alle Threads teilen sich einen gemeinsamen Heap.

Jeder Thread hat einen privaten Stack, dem er Elemente schnell hinzufügen und daraus entfernen kann. Dies macht stapelbasierten Speicher schnell, aber wenn Sie zu viel Stapelspeicher verwenden, wie es bei unendlicher Rekursion der Fall ist, erhalten Sie einen Stapelüberlauf.

Da sich alle Threads denselben Heap teilen, muss der Zugriff auf den Allocator/Deallocator synchronisiert werden. Es gibt verschiedene Methoden und Bibliotheken zum Vermeiden von Zuweisungskonflikten.

Einige Sprachen erlauben es Ihnen, private Speicherpools oder einzelne Heaps zu erstellen, die Sie einem einzelnen Thread zuweisen können.


Linux
  1. Wie benenne ich einen Thread in Linux?

  2. Thread-ID vs. Thread-Handle

  3. Hat Python ein argc-Argument?

  4. ID eines Python-Threads, wie von top gemeldet

  5. Ist fopen() eine threadsichere Funktion in Linux?

Präemptive Threads im Vergleich zu nicht präemptiven Threads

Greifen Sie von einem anderen Thread auf Thread-lokal zu

Threads und Dateideskriptoren

Signalbehandlung mit mehreren Threads in Linux

Hat Python eine Synchronisierung?

Sind Linux-Kernel-Threads wirklich Kernel-Prozesse?