GNU/Linux >> Linux Esercitazione >  >> Linux

I thread hanno un heap distinto?

Per impostazione predefinita, C ha un solo heap.

Detto questo, alcuni allocatori che sono a conoscenza del thread partizioneranno l'heap in modo che ogni thread abbia la propria area da cui allocare. L'idea è che questo dovrebbe migliorare la scala dell'heap.

Un esempio di tale mucchio è Hoard.


No. Tutti i thread condividono un heap comune.

Ogni thread ha uno stack privato, da cui può aggiungere e rimuovere rapidamente elementi. Ciò rende veloce la memoria basata sullo stack, ma se si utilizza troppa memoria dello stack, come accade nella ricorsione infinita, si otterrà un overflow dello stack.

Poiché tutti i thread condividono lo stesso heap, l'accesso all'allocatore/deallocatore deve essere sincronizzato. Esistono vari metodi e librerie per evitare la contesa dell'allocatore.

Alcuni linguaggi ti consentono di creare pool privati ​​di memoria, o singoli heap, che puoi assegnare a un singolo thread.


Linux
  1. Introduzione ai thread di Linux – Parte I

  2. Thread POSIX staccati e unibili

  3. Thread preventivi vs thread non preventivi

  4. ID thread e handle del thread

  5. Accedi al thread locale da un altro thread

Come creare thread in Linux (con un programma di esempio C)

Come nominare un thread in Linux?

errno è thread-safe?

Come stampare pthread_t

funzione strtok thread safety

Python ha la sincronizzazione?