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
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 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_non_thread()
{
    ///ecriture variable
    int i = 0;
    for(i = 0; i < 1000; i++)
    tab[i] = i;
}
et mon main
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
    }

    }
}
voila ce programme représente a peu près mon vrai programme, sauf
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