SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parl� avant.
"Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
Apparently everyone. -- Raymond Chen.
Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.
Par MapViewOfFile() et CreateFileMapping(). Cette derni�re fait un lien entre un fichier et une zone m�moire (pour mapper un fichier en m�moire) ou entre une zone m�moire et un pseudo-fichier. Il y a un lien fort entre m�moire partag�e et mapping de fichier (sous Windows). C'est similaire � POSIX, ou une zone de m�moire partag�e (cr��e avec shm_open()) doit ensuite �tre mapp�e avec mmap() pour qu'on puisse y acc�der.
Du point de vue de l'interaction avec l'OS, l'objet "m�moire partag�e" se comporte grosso-modo comme un fichier - qu'on soit sous Windows ou sous POSIX. C'est bien �videmment une approximation - il est �vident que la m�moire et les fichiers ne sont pas tant li�s que �a - mais l'interface de contr�le est similaire.
[FAQ des forums][FAQ D�veloppement 2D, 3D et Jeux][Si vous ne savez pas ou vous en �tes...]
Essayez d'�crire clairement (c'est � dire avec des mots fran�ais complets). SMS est votre ennemi.
Evitez les arguments inutiles - DirectMachin vs. OpenTruc ou G++ vs. Caf�. C'est d�pass� tout �a.
Et si vous �tes sages, vous aurez peut �tre vous aussi la chance de passer � la t�l�. Ou pas.
Ce site contient un forum d'entraide gratuit. Il ne s'use que si l'on ne s'en sert pas.
Il y a une version tr�s peu avanc�e sur google code (https://code.google.com/p/edt-process-cpp1y/)
Pour ce qui est des news, je n'en ai pas � proposer : je suis un peu surcharg� en ce moment. Ca devrait se calmer � moyen terme. Quoi qu'il en soit, ce n'est pas un projet abandonn�.
Il me reste � r�soudre certains probl�mes d'impl�mentation, notamment sous Linux. Les mutex nomm�s posent des soucis (je pense que �a vient d'une utilisation moyennement correcte de futex(2) ; heureusement, des gens brillants ont imagin� des rem�des � mon incapacit� � lire une page man : http://www.akkadia.org/drepper/futex.pdf).
Les mutex nomm�s r�cursifs sont quand � eux vraiment probl�matiques. J'�tudie l'impl�mentation des mutex r�cursifs normaux dans pthread et dans la librairie C++ standard de g++ - si vous avez une id�e, je suis preneur.
[FAQ des forums][FAQ D�veloppement 2D, 3D et Jeux][Si vous ne savez pas ou vous en �tes...]
Essayez d'�crire clairement (c'est � dire avec des mots fran�ais complets). SMS est votre ennemi.
Evitez les arguments inutiles - DirectMachin vs. OpenTruc ou G++ vs. Caf�. C'est d�pass� tout �a.
Et si vous �tes sages, vous aurez peut �tre vous aussi la chance de passer � la t�l�. Ou pas.
Ce site contient un forum d'entraide gratuit. Il ne s'use que si l'on ne s'en sert pas.
Pour l'instant je n'ai besoin de lancer un programme avec des paramettres. J'ai deja mis en place via reseau un protocole de processus maitre-esclave parceque j'ai besoin que ca marche meme sur differentes machines.
Par contre je pense aussi utiliser les fonctions pour lancer un autre processus encore, qui monitor les processus en local (detection de crash et centralisation des logs), auquel cas le systeme de processus enfant serait plus simple a utiliser que mon systeme maitre/esclave.
Bref je vais sous-utiliser cette bibliotheque pour l'instant.
Ce qui m'interesse c'est que c'est portable.
Je viens de realiser qu'il y a un autre cas d'utilisation de cette bibliotheque: ecrire des tests unitaires pour des systemes multi-process.
J'ai le cas suivant:
J'ai deux processus, le premier client, le second serveur.
Il y a plusieurs modes d'execution, mais dans le cas classique le client va lancer le serveur. Le client aura prealablement ouvert des connection reseau pour accepter des "esclaves". Le protocole maitre/esclave que j'ai implemente fait juste que si le maitre meurt, les esclaves aussi. Bref, l'implementation de ce protocol est en deux parties.
Le probleme c'est comment je test que ce protocole marche? J'ai mes classes MasterProcess et SlaveProcess. Normalement c'est facile de les utiliser. Mais pour ecrire un test unitaire il faut creer des applications de test (ou une seule) qui utilise l'un ou l'autre et qui font le test.
Ca me semble beaucoup plus simple a ecrire, en theorie, avec ta bibliotheque. Mais je peu me tromper. Je vais voir ca des que j'ai fini de lutter avec d'autres parties du code.
Partager