bonjour,
je suis entrain de faire une application qui doit (mais peut ne pas) finir une tache dans un temps imparti.
j'ai donc decider d'utiliser 2 threads car dans certain cas la dite tache peut etre entrain de lire une socket ou un discripteur qui n'est pas pret (donc attend).
voici le main:
je passe simplifie le code de operate qui est trop long pour etre mis ici (sauf si vous insistez):
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 pthread_t tid,ctr,*ctr_ret; pthread_create(&ctr,(void *)m_timer,NULL); pthread_create(&ctr,(void *)operate,NULL); pthread_join(ctr,(void **)&ctr_ret);
puis la fonction m_timer
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 size=read_myfd(fd,4); if(size<0) { free(myvar); close(fd); return NULL; } total_size+=size; REALLOC(char,myvar,total_size); ... return myvar;ma question est comment faire en sorte que lorsque m_timer termine, je puisse terminer aussi operate en ayant la possibilite de free(myvar)?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 void m_timer(int interval) { time_t entrance,now; time(&entrance); do { time(&now); if(now-entrance>=interval) { fprintf(stderr,"timeout exiting\n"); break; } }while(1); }
merci pour le temps que vous passez a lire mes idee tordus, peut etre qu'il y a mieux a faire que du multithreading sur le coup?
Partager