2009-09-02 6 views
1

Si nous voulons utiliser des données spécifiques au thread dans une application multithread, comment accéder périodiquement à ces données à partir d'un autre thread de collecteur? C'est possible?Données spécifiques au thread

Cordialement Ram

+0

Quel système d'exploitation ciblez-vous? –

+0

C'est pour toutes les saveurs. Mais je pense que ce sera bien si je reçois pour Linux. – vpram86

Répondre

1

Oui, tous les fils dans le processus (l'application) partagent la même mémoire. Donnez simplement l'adresse des données au fil du collecteur. Soyez prudent avec l'accès simultané: lire certaines parties de la mémoire pendant sa mise à jour. Vous devrez peut-être protéger certaines zones de mémoire avec mutex.

+0

Merci! Alors voulez-vous dire que nous devons mettre les adresses allouées dans tous les threads pour mes données dans une liste commune ou quelque chose, où le thread collecteur peut aller et se référer, accéder et récupérer des données? D'une manière synchronisée? – vpram86

+0

Oui, ou vous pouvez transmettre l'adresse à votre thread de collecte lorsque vous le créez. – philant

+0

Merci phillipe! – vpram86

0

Sous certains systèmes, il est possible de créer des variables dans ce que l'on appelle le stockage local à threads . Gcc manual explique comment vous pouvez y parvenir et fournit le lien vers l'article de Drepper, qui explique les détails techniques. C'est une extension standard C, donc sous votre système il devrait y avoir un mécanisme différent.

+0

Il semble être très infromative. Merci beaucoup. Je vais y jeter un coup d'oeil. – vpram86

Questions connexes