Articles of pthreads

Le fil créé (détaché) n’a jamais été exécuté

J’ai écrit ce code: void* th (void* arg) { sleep(1); for(int i=0; i<1000;i++) { fprintf(stderr,"%d\t",i); } pthread_exit(NULL); } int main(int argc, char** argv) { pthread_t thread; pthread_attr_t attr; pthread_attr_init(&attr); pthread_attr_setdetachstate(&attr,PTHREAD_CREATE_DETACHED); pthread_create(&thread,&attr,th,NULL); pthread_attr_destroy(&attr); return 0; } Le détachement devrait rendre le fil non joignable, il devrait donc s’exécuter même après la fin du processus principal. Mais […]

C Pthreads – Problèmes d’implémentation de files d’attente sécurisées pour les threads

Je suis novice en multithreading et j’essaie d’implémenter une queue de tâches sécurisée pour les threads, où chaque thread peut tirer son travail jusqu’à ce qu’il ne rest plus de tâches. Aucune queue de tâches ne sera créée par aucun des threads. À des fins de test, chaque tâche ne contient qu’un nombre. static pthread_mutex_t […]

pthread avec une structure unique en paramètre C

J’ai ce code qui me cause des problèmes. Je sais que tous les threads lisent la même structure. Mais je ne sais pas comment résoudre ce problème. #include #include #include typedef struct { int a,b; } s_param; void * threadfunc(void *parm) { s_param *param2 = parm; printf(“ID:%d and v:%d\n”,param2->a,param2->b); pthread_exit(NULL); } int main(int argc, char […]

Avec les threads, comment dois-je gérer quelque chose qui devrait idéalement se dérouler dans un ordre séquentiel?

J’ai un générateur d’image qui gagnerait à fonctionner en threads. J’ai l’intention d’utiliser des threads POSIX et j’ai écrit un code de maquette basé sur https://computing.llnl.gov/tutorials/pthreads/#ConVarSignal pour tester les éléments. Dans le programme prévu, lorsque l’interface graphique est utilisée, je souhaite que les lignes générées apparaissent une par une de haut en bas (la génération […]

Comment “tuer” un Pthread?

J’apprends Pthreads et je me demandais quel était le meilleur moyen de tuer un tel object. Après avoir recherché des questions similaires, je n’étais pas en mesure de trouver une réponse “claire”, mais n’hésitez pas à me diriger vers des questions pertinentes. Je travaille avec une petite application client-serveur, où le thread du serveur principal […]

Déplacer des pages de mémoire par thread dans l’architecture NUMA

J’ai 2 questions en une: (i) Supposons que le thread X s’exécute sur la CPU Y. Est-il possible d’utiliser les appels système migrate_pages – ou mieux encore move_pages (ou leur wrapper libnuma) – pour déplacer les pages associées à X vers le nœud auquel Y est connecté? Cette question se pose parce que le premier […]

Quitter un fil après la fin du processus de communication

Je travaille sur une application serveur multi-thread en C utilisant Pthreads.Comment puis-je quitter un thread et libérer les ressources qu’il utilise après que le client a envoyé une demande de fermeture de la connexion? Je colle mon code ci-dessous Principal c #include “extern.h” int thread_counter = 0; int rc; void main(int argc, char** argv){ int […]

Comment vérifier si un thread est terminé lors de l’utilisation de pthread?

Comment puis-je vérifier si un fil est terminé? Dans mon cas, j’ai my_pthread [5] et je veux vérifier si l’un des 5 threads a terminé son travail (est terminé? – je ne suis pas sûr), alors je peux leur donner plus de travail. Si j’utilise pthread_join (), alors ce doit être: pthread_join(my_pthread[0]); … pthread_join(my_pthread[4]); Et […]

Trier 2 tableaux à l’aide de 2 threads prend plus de temps que le sorting des 2 tableaux un par un

J’ai 2 tableaux non sortingés et 2 copies de ces tableaux. J’utilise deux threads différents pour sortinger deux tableaux, puis je sortinge les deux autres tableaux non sortingés un par un. Ce que je pensais, c’était que le processus de thread serait plus rapide mais ce n’est pas le cas, alors comment les threads prennent-ils […]

Xenomai clock_nanosleep dans l’enveloppe POSIX passe au kernel Linux

Je teste la peau POSIX sous Xenomai. J’essaie de lire et d’écrire à partir de certains GPIO sur un Raspberry Pi, et lorsque j’exécute le programme, le nombre de changements de contexte (dans / proc / xenomai / stat /) augmente. Le programme principal mappe les GPIO en mémoire et lance les pthreads. La tête […]