2009-11-10 5 views

Odpowiedz

14

Zawsze stosuj pamięć.

Zmienne globalne zależą od platformy, zazwyczaj są udostępniane.

Stos jest zależny od wątku, a także rejestrów.

+0

Udostępniony na Linuksie? – Algific

+0

@data_jepp Tak, udostępniane na Linuksie. Jeśli chcesz mieć lokalne zmienne "globalne" dla wątków, możesz alokować pamięć lokalną wątku za pomocą funkcji pthread_ *. –

1

To zależy od języka i implementacji wątku. Na przykład, nie sądzę, że nawet C pozwala na bezpośredni dostęp do rejestrów procesora, więc jest raczej dyskusyjne, czy, powiedzmy, rejestry udziałów pthreads (które, dla zapisu, jestem prawie pewien, że nie). Również w C zmienne globalne są , a nie w rzeczywistości przydzielane na stercie, chociaż mogą być w innych językach.

Stos jest bardziej skomplikowany. W języku C/pthreads każdy wątek ma swój własny stos, ale w innych językach i modelach wątków sytuacja może być znacznie bardziej skomplikowana, ponieważ podstawowe modele stosów mogą nie być tak proste.

+0

Możesz użyć wbudowanego zestawu w C, aby uzyskać dostęp do rejestrów, ale wtedy zaczyna tracić nazwę "Portable Assembly". – NVRAM

0

stos: brak

rejestry: brak

sterty: tak (jeśli masz do wyboru y lub n, prawdziwe odpowiedzi jest to zależy)

globalne: tak

0

Wartości globalne i pamięć sterty są współużytkowane w procesie wielowątkowym. Wartości rejestrów i pamięć stosu są prywatne dla każdego wątku.