Thread lecture / ecriture
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:
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:
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:
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