• [^] # Re: Verrou et RAII

    Posté par . En réponse à la dépêche Instantané sur le parallélisme et le code. Évalué à 3.

    Je vois. En rust, on utilise en proxy. La méthode write() retourne une structure qui contient un pointeur vers le mutex. Le destructeur de cette structure deverouille le mutex. Ensuite, la magie du trait Deref/DerefMut entre en jeux. Cela revient à surcharger l'implémentation de * ou de ->. Ainsi, le compilateur va considérer cette structure comme une référence vers la valeur protégée par le mutex.

    De plus, grace au lifetime, il est impossible de conserver une reference vers la valeur protégée après avoir dévérouillé le verrou, c'est garranti à la compilation. C'est assez malin. Je pense que tu peux faire ça en C++, sauf peut être la dernière garrantie car rien n'interdit en C++ de cloner des references.