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> 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>
P> P>
Combien de taille prend-il p> blockQuote>
pthread_t code> utiliseTailleof 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>