J'ai quelques questions sur Pthreads à Linux: P>
pthread_t code> est-il un type de données similaire à int code> et char code> indiquant que nous définissons un thread? li>
- Si oui, combien de taille faut-il? 2 octets ou 4 octets? li>
- Le compilateur alloue-t-il la mémoire à
pthread_t thread1 code> immédiatement après cette instruction ou attend-il jusqu'à ce que ce soit un pthread_create () code> appel? li>
- Comment définit-on les attributs de thread et quelle est leur utilisation typique? LI>
- peut-on seulement passer plus d'un argument dans le
pthread_create () code> appel? Si oui, comment? Li>
ol>
J'ai beaucoup de choses dans mon esprit comme ça. N'hésitez pas non plus à suggérer de bons sites ou documents à lire. p>
4 Réponses :
Répondre aux questions une par une, bien que pas nécessairement dans le même ordre:
< Code> pthread_t code> est un type similaire à C'est la ligne première em> qui crée la variable, bien qu'elle ne tienne rien d'utile avant le retour de vous ne devriez pas Je me soucie de la quantité d'espace qu'il faut, plus que vous devriez vous soucier de la manière dont l'espace est pris par un fichier Toutes les bonnes informations sur la manière de définir les attributs de threads? Strong> p> Si vous souhaitez utiliser quelque chose d'autre que des attributs par défaut, vous devez d'abord créer une variable d'attributs, puis transmettez-le sur le Pouvons-nous seulement passer un argument dans la fonction pendant que vous êtes uniquement autorisé à passer un em> paramètre supplémentaire sur le fil, rien ne vous empêche de faire ce paramètre un paramètre un pointeur à une structure tenant une centaine de choses différentes. P> Si vous recherchez des informations sur la façon de savoir comment Utilisez Pthreads, il y a beaucoup de choses à la fin d'une recherche Google, mais je préfère toujours la version de l'arbre mort moi-même: p> P> P> pthread_t code> un type de données similaire à
int code> ou
Char code>, indiquant que nous définissons un thread? Est-ce que le compilateur alloue la mémoire à
pthread_t thread1 code> immédiatement après cette phrase ou attend-il jusqu'à ce qu'il trouve le
pthread_create () code> appel p>
int code> et il est créé lorsque vous le définissez, pas lorsque vous appelez
pthread_create code>. Dans le snippet: p>
pthread_create code>. p>
pthread_t code> prendre, 2 octets ou 4 octets? strong> p>
code> structure. Vous devriez simplement utiliser la structure comme prévu. Si vous vraiment em> veux savoir, alors
Tailleof code> est votre ami. P>
pthread_create code> appel. P>
pthread_create code> à la fonction? Ne pouvons-nous pas envoyer 2 ou 3 arguments dans le
pthread_create () code> fonction au thread appelé? Strong> p>
Combien de taille prend-il p> blockQuote>
pthread_t code> utilise
Tailleof pthread_t code> octets. p>
Et nous ne pouvons que passer un argument dans le pthread_create à la fonction pas plus d'un? ne pouvons-nous pas envoyer 2 ou 3 arguments dans la fonction pthread_create () au fil appelé? p> blockQuote>
Tout ce dont vous avez besoin est un argument. Tout ce que vous obtenez, c'est un argument. C'est un
void * code> afin que vous puissiez transmettre un pointeur sur tout ce que vous voulez. Strong> tel qu'une structure contenant plusieurs valeurs. P>
J'ai beaucoup de choses dans mon esprit, comme cela suggère de bons sites ou documents à lire p> blockQuote>
Regardez les pages code> pthead code>, en ligne ou dans votre coquille de choix (
homme pthread code>,
homme pthread_create code>, etc.). J'ai commencé à lire un peu diapositives de la conférence de base (voici < Un href = "http://www.cs.brown.edu/courses/cs168/s11/Mandouts/threads2.pdf" rel = "nofollow"> la suite ). P>
regarder dans pthread.h code> fichier pour obtenir plus d'informations. Sur mon système,
pthread_t code> est défini comme un
non signé long int code>. Mais je suppose que c'est dépendant de la plate-forme, car il est défini dans
bits / pthreadype.h code>. p>
C'est très dépendant de la plate-forme. Sur certains systèmes, il s'agit d'un struct code>.
Le compilateur peut également allouer les ressources associées au fil lorsque vous définissez un Les attributs sont certes un peu maladroits. Ils sont détenus dans un objet Différentes implémentations peuvent et traiteront toutes ces choses différemment. P>
LLNL a un ensemble décent d'informations d'introduction . P> pthread_t code> pourrait être tout numéro em> d'octets. Cela pourrait être un char, un int, un pointeur ou une structure ... mais vous n'avez pas besoin de savoir ni de prendre soin. Si vous avez besoin de la taille à des fins d'allocation, vous utilisez
Tailleof (pthread_t) code>. Le seul type de variable que vous pouvez attribuer à un autre
pthread_t code>. P>
pthread_t code>. Encore une fois, vous n'avez pas besoin de savoir ni de prendre en charge, car vous devez appeler
pthread_join code> (ou
pthread_detach code>) sur n'importe quel thread que vous créez. Tant que vous suivez les règles, le système s'assurera qu'il ne fuit pas la mémoire (ni aucune autre ressource). P>
pthread_attr_t code>, qui pourrait encore être représenté comme un entier, un pointeur ou une struct entière. Vous devez l'initialiser avec
pthread_attr_init code> et le détruire avec
pthread_attr_destroy code>. Entre ces deux, vous utilisez diverses
pthread_attr _... code> pour définir ou effacer les attributs, puis vous pouvez le transmettre dans le cadre d'un ou plusieurs
pthread_create code> appels pour définir les attributs des nouveaux threads. P>