Welche Komponenten des Programmstatus werden in Threads in einem Prozess mit mehreren Threads gemeinsam verwendet?

8

Welche der folgenden Komponenten des Programmstatus wird in Threads in einem Prozess mit mehreren Threads gemeinsam verwendet?

  • Werte registrieren
  • Arbeitsspeicher
  • Globale Variablen
  • Stapelspeicher

Mein Vorschlag; Nur globale Variablen, globale Variablen werden auf dem Heap zugeordnet? Also Heap-Speicher und globale Variablen. Ist das richtig?

    
Algific 10.11.2009, 21:16
quelle

4 Antworten

14

Speicher immer speichern.

Globale Variablen hängen von der Plattform ab, normalerweise werden sie geteilt.

Stack ist Thread-spezifisch, ebenso wie Register.

    
Antti Huima 10.11.2009, 21:20
quelle
1

Das hängt von der Sprache und der Thread-Implementierung ab. Zum Beispiel glaube ich nicht, dass selbst C Ihnen erlaubt, direkt auf die CPU-Register zuzugreifen, also ist es eher unstrittig, ob, sagen wir, pthreads die Register teilt (was, um es festzuhalten, ziemlich sicher ist, dass dies nicht der Fall ist). Auch in C sind globale Variablen nicht tatsächlich auf dem Heap zugeordnet, obwohl sie möglicherweise in anderen Sprachen vorliegen.

Der Stapel ist komplizierter. In C / Pthreads hat jeder Thread seinen eigenen Stack, aber in anderen Sprachen und Threading-Modellen könnte die Situation viel komplizierter sein, einfach weil die zugrunde liegenden Stack-Modelle nicht so einfach sein können.

    
Thom Smith 10.11.2009 21:22
quelle
0

Stapel: nein

registriert: nein

heap: ja (wenn du y oder n wählen musst, hängt die wahre Antwort davon ab)

globals: ja

    
pm100 10.11.2009 22:23
quelle
0

Die globalen Werte und der Heap-Speicher werden in einem Multithread-Prozess gemeinsam genutzt. Registerwerte und Stapelspeicher sind für jeden Thread privat.

    
Ashutosh Singh 30.01.2013 04:14
quelle