Articles of pthreads

ne peut pas créer le fil correctement

quelqu’un peut-il me dire ce que je fais mal? (J’ai omis le rest du programme parce que c’est très long …) #include void *RTPfun(char *client_addr); int main(int argc, char *argv[]) { char* client_addr; pthread_t RTPthread; // … pthread_create(&RTPthread, NULL, &RTPfun, client_addr) } void *RTPfun(char * client_addr) { // … return; } l’erreur: TCPserver.c: Dans la […]

Comprendre le mécanisme de barrière posix

Voici un morceau (très simplifié, de variables globales et autres “odeurs”) de code C, qui utilise la primitive barrière posix pour créer un thread thread. #include #include pthread_barrier_t barrier; void* thread_func(void* aArgs) { pthread_barrier_wait(&barrier); printf(“Entering thread %p\n”, (void*)pthread_self()); int i; for(i = 0 ; i < 5; i++) printf("val is %d in thread %p \n", […]

Variables de locking mutth pthread utilisées dans les instructions

Tout d’abord, j’ai un pressentiment qui dit que, dans une instruction if, si j’utilise la variable, cela revient à lire la variable, je dois donc la verrouiller également avec mutex (si un autre pthread pouvait le faire) . Ai-je raison de le verrouiller? L’exemple de situation de manière simplifiée est donné ci-dessous. dans un fil, […]

Est-ce que sleep () interfère avec scanf ()?

J’ai deux fils xThread : imprime en continu X sur la console inputThread : obtient une entrée du stdin L’impression en continu s’arrête lorsque l’utilisateur entre «C» ou «c» #include #include #include #define S sleep(0) int read_c = 0; pthread_mutex_t read_c_mutex = PTHREAD_MUTEX_INITIALIZER; void* inputThread_fn(void* arg) { char inputChar; while(1) { S; printf(“\nChecking input”); scanf(“%c”,&inputChar); […]

boucle de condition pthread

Le schéma typique de l’utilisation de pthread_cond_wait que j’ai vu est le suivant: pthread_mutex_lock(&lock); while (!test) pthread_cond_wait(&condition, &lock); pthread_mutex_unlock(&lock); Pourquoi une instruction if ne peut-elle pas être utilisée à la place d’une boucle while? pthread_mutex_lock(&lock); if (!test) pthread_cond_wait(&condition, &lock); pthread_mutex_unlock(&lock);

Passer plus d’un paramètre à pthread_create

Dupliquer possible: Plusieurs arguments à la fonction appelée par pthread_create ()? Comment passer plus d’une valeur en tant qu’argument à un thread en C? J’ai ces structures: struct Request { char buf[MAXLENREQ]; char inf[MAXLENREQ]; /* buffer per richiesta INF */ int lenreq; uint16_t port; /* porta server */ struct in_addr serveraddr; /* ip server sockaddr_in […]

Nombre maximum de threads

J’ai un programme qui accepte 2 nombres de N chiffres, les multiplie en utilisant des fils et imprime la sortie. Le nombre de threads créés ici est 2 * N – 1 . chaque fois que j’exécute le programme pour N > 151 , le programme me donne une erreur de segmentation. Le nombre maximal […]

c en passant plusieurs arguments aux threads

quand je crée un fil, je veux passer plusieurs arguments. Donc, je définis dans un fichier d’en-tête ce qui suit: struct data{ char *palabra; char *directorio; FILE *fd; DIR *diro; struct dirent *strdir; }; Dans un fichier .c je fais ce qui suit if (pthread_create ( &thread_id[i], NULL, &hilos_hijos, ??? ) != 0){ perror(“Error al […]

problème de terminaison de thread (programmation c)

Je travaille sur une application pour Linux en C qui utilise plusieurs threads. Les threads générés par la fonction principale effectuent l’essentiel du travail et finissent donc généralement en dernier. Je vois un comportement étrange, et je crois que cela est dû au fil principal qui se termine avant que les fils créés ne puissent […]

réutiliser la variable pthread_t pour les threads en cours d’exécution

Je ne suis pas sûr que le code suivant conduise à un comportement indéfini. //global pthread_t thread1; void *worker(void *arg){ //do stuff } void spawnThread(){ //init stuff int iret1 = pthread_create( &thread1, NULL, worker, (void*) p); } Mon spawnThread créera un nouveau thread en utilisant le thread global1. Si j’exécute actuellement un thread qui n’est […]