Bonjour,
J'ai besoin d'aide de la communauté C . J'utilise un logiciel qui possède une API C qui pourrait me permettre d'accèlerer la vitesse de traitement si j'arrive à faire un petit programme mais je ne suis pas un expert en la matière. J'ai donc vraiment besoin de vous pour m'aider à débuter.
Le programme actuel eval_objects prend actuellement deux arguments:
- les objets à évaluer
- Le fichier de résultat
Par exemple:
eval_objects "{AT, DE, LU, PT, HU, PL, RO, SK},{EMPL},{F},{M},{G, S, T},{SER}" , "resulats.txt"
A partir de la 1ère chaine de caractère, le programme actuel fait par lui même le produit cartésien suivant:
AT.EMPL.F.M.G.SER
AT.EMPL.F.M.S.SER
AT.EMPL.F.M.T.SER
DE.EMPL.F.M.G.SER
DE.EMPL.F.M.S.SER
DE.EMPL.F.M.T.SER
LU.EMPL.F.M.G.SER
LU.EMPL.F.M.S.SER
LU.EMPL.F.M.T.SER
PT.EMPL.F.M.G.SER
PT.EMPL.F.M.S.SER
PT.EMPL.F.M.T.SER
HU.EMPL.F.M.G.SER
HU.EMPL.F.M.S.SER
HU.EMPL.F.M.T.SER
PL.EMPL.F.M.G.SER
PL.EMPL.F.M.S.SER
PL.EMPL.F.M.T.SER
RO.EMPL.F.M.G.SER
RO.EMPL.F.M.S.SER
RO.EMPL.F.M.T.SER
SK.EMPL.F.M.G.SER
SK.EMPL.F.M.S.SER
SK.EMPL.F.M.T.SER
Puis il évalue séquentiellement chaque objet en appelant la fonction evaluate et redirige ce qui va normalement sur la sortie standard (et donc de taille variable) vers le fichier passé dans le second paramètre.
Pour améliorer les performances, j'aimerais transformer le programme pour qu'il ne travaille plus en séquentiel mais en parallèle sur un nombre de thread predéfini.
Les problèmes que je vois sont:
1) Le programme doit être capable d'interpréter le 1er argument pour faire le produit cartésien et le stocker un tableau de chaine de caractères alors que c'était géré initialement par le programme.
2) Le main distribue l'évaluation de l'objet au 1er thread disponible
3) La fonction evaluate doit être encapsuler pour garder en mémoire le résultat (ce qui va normalement sur la sortie standard et qui est donc de taille variable) et l'écrire dans le fichier si aucun autre thread n'est entrain d'écrire.
Mes questions sont:
Est ce que quelqu'un pourrait m'aider à débuter? Est-ce qu'il y aurait des fonctions existantes qui pourraient me simplifier la tâche pour faire le produit cartésien? Je n'ai jamais écrit d'application multthread. Est-ce que quelqu'un a déjà fait quelque-chose de similaire dont je pourrais m'inspirer pour ce programme?
Merci d'avance.
Cédric
Partager