GNU/Linux >> Tutoriels Linux >  >> Linux

Les threads ont-ils un tas distinct ?

Par défaut, C n'a qu'un seul tas.

Cela dit, certains allocateurs qui sont conscients des threads partitionneront le tas afin que chaque thread ait sa propre zone à allouer. L'idée est que cela devrait améliorer l'échelle du tas.

Un exemple d'un tel tas est Hoard.


Non. Tous les threads partagent un tas commun.

Chaque thread a une pile privée, à partir de laquelle il peut rapidement ajouter et supprimer des éléments. Cela rend la mémoire basée sur la pile rapide, mais si vous utilisez trop de mémoire de pile, comme cela se produit dans la récursivité infinie, vous obtiendrez un débordement de pile.

Étant donné que tous les threads partagent le même tas, l'accès à l'allocateur/libérateur doit être synchronisé. Il existe diverses méthodes et bibliothèques pour éviter les conflits d'allocation.

Certains langages vous permettent de créer des pools de mémoire privés, ou des tas individuels, que vous pouvez affecter à un seul thread.


Linux
  1. Avons-nous une annulation sous Linux ?

  2. Est-ce que errno est thread-safe ?

  3. Comment imprimer pthread_t

  4. sécurité des threads de la fonction strtok

  5. Accéder au thread local à partir d'un autre thread

Threads et descripteurs de fichiers

Python a-t-il un argument argc ?

Traitement du signal avec plusieurs threads sous Linux

Python est-il synchronisé ?

Est-ce que fopen() est une fonction thread-safe sous Linux ?

Les threads du noyau Linux sont-ils vraiment des processus du noyau ?