You are on page 1of 4

#include <pthread.

h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
Int j=0; //variable globale
Void * fonction_thread{void * arg} ;
Define NB_THREADS 5
Int main (void)
{
Pthread_t thr(NB_THREADS) ;
Int i ;
For (i=0 ; i < NB_THREADS ; i++){
If (pthread_create(& thr[1], NULL , fonction_thread, (void
*)&1) !=0){
fprintf(stderr, ‘Erreur dans pthread_create /n’) ;
exit{EXIT_FAILURE} ;
}
Sleep(1) ;
}
For (1=0 ; 1 < NB_THREADS ; 1 ++) {
Pthread_join(thr[i] , NULL) ;
}
fprintf(stderr, ‘THRAD Main\n’) ;
printf(“%d”,j) ;
return 0 ;
}
Void * fonction_thread(void * arg)
{ int num = * ((int * )arg) ;
fprintf(stderr, ‘Thread numero %d\n’ , num) ;
j++;
pthread_exit(NULL) ;
}

Exercice 2 :
#include<pthread.h>
#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
#define k 12000
int a=0;
void *increment(){
for(int i=0;i<k;i++) {
x++; }
}
void *decrement()
{ for(i=0;i<k;i++)
{i--;}
int main() {
pthread_t thread[2]
pthread_create(&thread[0],Null, increment())
pthread_create(&thread[1],Null, decrement());
return 0;

2) pthread_join() est utilisée pour la synchronisation :


Code modifié :
#include<pthread.h>
#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
#define k 12000
int a=0;
void *increment(){
for(int i=0;i<k;i++) {
x++; }
}
void *decrement()
{ for(i=0;i<k;i++)
{i--;}

int main() {
pthread_t thread[2]
pthread_create(&thread[0],Null, increment())
pthread_create(&thread[1],Null, decrement());
pthread_join(thread[0],Null);
pthread_join (thread[1],Null);
fprintf(a);
return 0 ;}

You might also like