Articles of linr pthreads

Pthread_join est-il indispensable lors de l’utilisation de pthread sous Linux

Je suis un pthread apprentissage et j’ai quelques questions. Voici mon code: #include #include #include #include #define NUM_THREADS 10 using namespace std; void *PrintHello(void *threadid) { int* tid; tid = (int*)threadid; for(int i = 0; i < 5; i++){ printf("Hello, World (thread %d)\n", *tid); } pthread_exit(NULL); } int main (int argc, char *argv[]) { pthread_t […]

Bibliothèque Linux Pthread, arguments de thread

Si je crée un fil à l’aide de la bibliothèque Pthread sous Linux, je dois utiliser la fonction pthread_create , qui est l’un des arguments suivants: void * , afin de pouvoir passer un pointeur sur quelque chose, afin que ma routine de fil puisse y accéder, mais est-elle sécurisée faire quelque chose comme ça […]

Linux: Comment trouver le fil qui détient un verrou particulier?

J’ai un programme multi-threads qui tourne sous Linux, parfois si je lance gstack contre cela, il y a un thread qui attend un verrou depuis longtemps (par exemple, 2-3 minutes), Fil 2 (fil 0x5e502b90 (LWP 19853)): 0 0x40000410 dans __kernel_vsyscall () 1 0x400157b9 dans __lll_lock_wait () à partir de /lib/i686/nosegneg/libpthread.so.0 2 0x40010e1d dans _L_lock_981 () […]

Comment l’index est affecté lorsque plusieurs threads s’exécutent dans une boucle

J’essayais d’écrire un programme qui exécute 5 threads et affiche son index en conséquence. Ci-dessous le code: #include #include #include int nthreads=5; void *busy(void* c) { int my_busy = *(int *) c; printf(“Hello World with thread index %d\n”, my_busy); return NULL; } int main() { pthread_t t1[nthreads]; void* result; for(int i=0; i<nthreads; i++) { pthread_create(&t1[i], […]

Comment synchroniser les processus via une bibliothèque statique sur Linux?

J’ai un projet de devoirs qui nécessite la création d’une bibliothèque STATIC pour fournir un access mutuel à quelques tuyaux nommés. Ces canaux servent à la communication entre différents clients utilisant la bibliothèque et un serveur. Maintenant, supposons que je veuille utiliser des mutex pthread; Comment puis-je y arriver? Comment les processus peuvent-ils savoir quelle […]

pthread_exit () dans le gestionnaire de signaux

(Cette question est peut-être liée à pthread_exit dans le gestionnaire de signaux, ce qui cause une erreur de segmentation. ) J’écris une bibliothèque de prévention de Leadlock, où il y a toujours un thread en train de faire des graphiques et qui vérifie s’il y a un blocage, s’il en est un. fils en conflit. […]

ordre de lancement multithread

J’ai 4 threads pour créer thread1, thread2, thread3 et thread4: pthread_create(thread1,NULL,thread_func1,NULL); pthread_create(thread2,NULL,thread_func2,NULL); pthread_create(thread3,NULL,thread_func3,NULL); pthread_create(thread4,NULL,thread_func4,NULL); regardant dans le débogage, l’ordre des threads lancés n’est pas le même que celui défini dans le code source. Existe-t-il une solution pour lancer les threads avec une commande que je pourrais définir?

À propos de pthread_cond_signal et pthread_cond_wait

J’ai des questions sur pthread_cond_signal et pthread_cond_wait . Par exemple, dans le code ci-dessous, si j’ai bien compris, lorsque inc_count appelle pthread_cond_signal , count + = 125 dans watch_count ne peut être exécuté qu’après le décompte de count_mutex dans inc_count . Count_mutex a été déverrouillé dans watch_count lorsque pthread_cond_wait est exécuté et n’est verrouillé qu’après […]

Problème avec un problème de synchronisation pThread

Je suis confronté à un problème de synchronisation avec pthread. threadWaitFunction1, est une fonction d’attente de thread. J’attends la ligne no. 247 flag = 1 à exécuter uniquement après 243-246. Mais je trouve étrange que parfois, il saute directement à 247 avant que 243-246 ne soit terminé. Aidez-moi, s’il vous plaît. Merci d’avance. 236 struct […]

Le thread créé par pthread_create est-il identique au thread du kernel?

J’utilise la commande ci-dessous pour afficher le nombre maximal de threads autorisés par mon système: # cat /proc/sys/kernel/threads-max Et le nombre est 772432. Cependant, j’utilise le code ci-dessous pour créer 1 million de threads. Et il fonctionne. #include #include static unsigned long long thread_nr = 0; pthread_mutex_t mutex_; void* inc_thread_nr(void* arg) { /* int arr[1024][1024]; […]