Salut, j'ai un problème que je n'arrive désespérément pas a résoudre.
Mon programme contient une variable globale
une fonction thread qui lit cette variable
Code : Sélectionner tout - Visualiser dans une fenêtre à part int tab[1000];
et une fonction non thread qui écrit dans ce tableau de variable
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 void *fctn_thread(void *arg) { ///lecture variable int i = 0; for(i = 0; i < 1000; i++) printf("%d", tab[i] ); }
et mon main
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 void fctn_non_thread() { ///ecriture variable int i = 0; for(i = 0; i < 1000; i++) tab[i] = i; }
voila ce programme représente a peu près mon vrai programme, sauf
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
17
18
19
20
21
22 int main() { int i; int temp_pre = time(); while(1) { for(i = 0; i < 5; i ++) // je lance plusieur thread lecture pthread_create(..., fctn_thread...); if(time() - temp_pre > 2000) //toutes les 2seconde { /// Ce que je souhaiterai c'est que les 5 threads en cours d'execution /// s'arrete lors de l'execution de cette fonction d'ecriture fctn_non_thread(); // modifie la variable /// et que ces 5 threads reprennent apres } } }
que mes threads prennent 2 a 3 seconde pour se terminer.
J'ai déjà appliquer les mutex, mais cette solution ne me convient
pas, puisqu'elle synchronise les threads entre eux( en les faisant
passé un par par un) , ce que je ne veux pas, car cela fait perdre
trop de temps.
existe il une solution qui me permettrait d’exécuter plusieurs thread
en mémé temps et les arrêter a un moment, puis de les reprendre
Merci
Partager