Lecture/Ecriture asynchrone de fichiers
Bonjour !
Je souhaite pouvoir effectuer des lectures/écritures asynchrones de fichier standards (std::fstream), en rendant cela totalement transparent pour l'utilisateur. Je souhaiterais donc avoir une fonction SynchronousRead (qui utiliserait la fonction standard read), SynchronousWrite (qui utiliserait la fonction standard write) et deux fonctions AsynchronousRead et AsynchronousRead.
D'après mes recherches, il y a des fonctions sous Windows pour ceci (ReadFileEx et WriteFileEx) mais je recherche quelque chose de portable, et je ne trouve rien de satisfaisant.
J'aimerais pouvoir écrire du code qui ressemblerait à ceci :
Code:
1 2 3 4 5 6
| SynchronousRead (buffer, sizeof (taille)); // Lecture synchrone
AsynchronousRead (handleOperation, buffer, sizeof (taille), MonCallback); // Lecture asynchrone, avec appel du callback et récupération des données une fois l'opération terminée
ou :
AsynchronousRead (handleOperation, buffer, sizeof (taille), NULL); // Lecture asynchrone, récupération plus bas dans la fonction |
Y a t-il un moyen portable d'effectuer de telles opérations ? J'ai regardé tout d'abord du côté de boost.Asio, mais Google ne donne absolument aucun résultat, et je ne trouve rien dans la doc qui me permette d'interfacer avec std::fstream.
Suis-je donc obligé de me créer une petite encapsulation de boost.Thread et de les utiliser pour effectuer des lectures/écritures asynchrones ? L'avantage de Boost.Asio étant qu'elle cache visiblement l'utilisation des threads...
Merci