Projet de programmation en VC++6.0
Fermé
hosni
-
3 avril 2004 à 21:01
turki.hassen Messages postés 1 Date d'inscription samedi 3 avril 2004 Statut Membre Dernière intervention 4 avril 2004 - 4 avril 2004 à 15:20
turki.hassen Messages postés 1 Date d'inscription samedi 3 avril 2004 Statut Membre Dernière intervention 4 avril 2004 - 4 avril 2004 à 15:20
A voir également:
- Projet de programmation en VC++6.0
- Vc red - Forum Virus / Sécurité
- Ce programme est écrit en python. il construit un mot secret dans une variable mais il ne l'affiche pas. modifiez-le pour qu'il affiche le mot secret. exécutez-le. quel est ce mot secret ? ✓ - Forum Python
- Mini projet en langage c corrigé - Forum C
- Programmation - Guide
- Application de programmation - Guide
3 réponses
La solution est l'exclusion mutuelle par semaphore. Tu peux synchroniser plusieurs taches en parrallele pour calculer plusieurs taches en meme temps. POur cela, dans les options de compilation de Visual C++, tu choisie "debug Multitreaded". Apres dans le code il faut que t'ulise des semaphores. Par contre si tu c'est pas ce que c'est ou comment ca marche, il faudrait que tu regardes des cours de progs systems. POur t'expliquer par l'exemple (qui vaudra mieu qu'une longue explication) :
#include <conio.h>
#include <iostream>
using namespace std;
#include <mx.h>
#include <time.h>
#pragma comment(lib, "mxdbg.lib")
void affch(char *s)
{
while(*s) _putch(*s++);
}
SEMA s1(0,1);
SEMA s2(0,1);
int *tab;
int nb;
int r1 = 0;
int r2 = 0;
int TACHE P1(int c)
{
for(int i = 0;i < nb/2; i++)
{
r1 += tab[i];
}
s1.signal();
return 0;
}
int TACHE P2(int c)
{
for(int i = nb-1; i >= nb/2; i--)
{
r2 += tab[i];
}
s2.signal();
return 0;
}
int main()
{
char rep = 'o';
while (rep == 'o')
{
cout << "Entrer le nombre de postes ( entre 1 et 900000 ) : ";
cin >> nb;
tab = new int [nb];
srand(time(NULL));
for(int i = 0; i < nb; i++)
tab[i] = rand();
tache(1,P1);
tache(2,P2);
lance(1);
lance(2);
if(nb < 201)
{
cout << "Contenu du vecteur :\n";
for(int j=0; j < nb; j++)
{
if((j%9) == 0) cout << "\n";
cout << tab[j] << "\t";
}
}
s1.wait();
s2.wait();
int resul = r1 + r2;
cout << "\n\n\n" << r1 << " + " << r2 << " = " << resul << endl;
cout << "Recommencer (o/n) ? ";
cin >> rep;
tuetache(1);
tuetache(2);
}
return 0;
}
#include <conio.h>
#include <iostream>
using namespace std;
#include <mx.h>
#include <time.h>
#pragma comment(lib, "mxdbg.lib")
void affch(char *s)
{
while(*s) _putch(*s++);
}
SEMA s1(0,1);
SEMA s2(0,1);
int *tab;
int nb;
int r1 = 0;
int r2 = 0;
int TACHE P1(int c)
{
for(int i = 0;i < nb/2; i++)
{
r1 += tab[i];
}
s1.signal();
return 0;
}
int TACHE P2(int c)
{
for(int i = nb-1; i >= nb/2; i--)
{
r2 += tab[i];
}
s2.signal();
return 0;
}
int main()
{
char rep = 'o';
while (rep == 'o')
{
cout << "Entrer le nombre de postes ( entre 1 et 900000 ) : ";
cin >> nb;
tab = new int [nb];
srand(time(NULL));
for(int i = 0; i < nb; i++)
tab[i] = rand();
tache(1,P1);
tache(2,P2);
lance(1);
lance(2);
if(nb < 201)
{
cout << "Contenu du vecteur :\n";
for(int j=0; j < nb; j++)
{
if((j%9) == 0) cout << "\n";
cout << tab[j] << "\t";
}
}
s1.wait();
s2.wait();
int resul = r1 + r2;
cout << "\n\n\n" << r1 << " + " << r2 << " = " << resul << endl;
cout << "Recommencer (o/n) ? ";
cin >> rep;
tuetache(1);
tuetache(2);
}
return 0;
}
POur ce prog, j'ai utiliser comme tu peux le voir une bibliotheque qui s'appelle MX et qui gere les semaphores.
Ce programme calcule la somme des données d'un tableau. La tache 1 parcours de gauche a droite, et la 2 inversement.
Une derniere chose, la syncro de plusieurs tache n'a d'interret que si tu possedes 2 proces ou un P4 Multithreaded !!!!
Ce programme calcule la somme des données d'un tableau. La tache 1 parcours de gauche a droite, et la 2 inversement.
Une derniere chose, la syncro de plusieurs tache n'a d'interret que si tu possedes 2 proces ou un P4 Multithreaded !!!!
je serais interresser de voir le source demon prog. Bonne continuation...
turki.hassen
Messages postés
1
Date d'inscription
samedi 3 avril 2004
Statut
Membre
Dernière intervention
4 avril 2004
4 avril 2004 à 15:20
4 avril 2004 à 15:20
Merci pour votre intervention.