Je ne sais pas ou en est le commit� sur la gestion des processus, et j'ai du mal � trouver les documents qui correspondent au travail du workshop concurrence.
Quoi qu'il en soit, je pensais faire une proposition, mais plut�t que de l'adresser au commit� sans pr�paration, je voulais auparavant passer par vous - parce que vous �tes un communaut� de gens vachement dou�s
Le texte de la proposition n'est pas finalis�, donc ce post pr�liminaire va servir � pr�senter une impl�mentation possible sous linux d'une classe std::process - et du namespace std::this_process. Ceux qui voient une ressemblance avec la classe std::thread voient juste : la classe std::process a exactement la m�me interface, � un poil pr�s (il n'y a pas de m�thode hardware_concurrency(), puisque �a n'a pas de sens). La classe process::id n'est pas compl�te pour l'instant (il manque de nombreux op�rateurs).
Le code se compile simplement : make va construire l'ex�cutable ptest. Le code de ptest est le suivant :
Il faudrait l'�tendre pour pr�senter les autres fonctionnalit�s de la classe et du namespace correspondant (notamment this_process::exec()). Je vais faire �a dans la journ�e (ou dans la soir�e).
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 #include <thread> #include <iostream> #include <cstdlib> #include <process> int main() { std::process p([=]() { std::cout << "- this process : " << std::this_process::get_id() << std::endl; std::exit(EXIT_SUCCESS); }); std::cout << "+ this process : " << std::this_process::get_id() << std::endl; std::cout << "+ before join() : " << p.get_id() << std::endl; p.join(); std::cout << "+ after join() : " << p.get_id() << std::endl; std::cout << "+ this process : " << std::this_process::get_id() << std::endl; }
L'impl�mentation sous Windows viendra lorsque j'aurais le temps (allez, on va dire : assez rapidement quand m�me ; le point ennuyeux �tant le fork(), mais je sais comment passer outre, donc �a ira).
Je joint l'impl�mentation sous la forme d'un tar.bz2, mais vous pouvez trouver une version plus � jours � l'adresse suivante : https://code.google.com/p/edt-process-cpp1y/
git clone https://code.google.com/p/edt-process-cpp1y/
Vous permettra de r�cup�rer le repository, dans lequel se trouvera rapidement un document lyx.
Partager