• [^] # Re: Verrou et RAII

    Posté par . En réponse à la dépêche Instantané sur le parallélisme et le code. Évalué à 2. Dernière modification le 24 juin 2015 à 11:06.

    C'est pas parfait mais ça aide déjà pas mal.

    Je suis d'accord sur ce point, j'utilise aussi ce genre de construction en Ocaml par exemple, ou il est d'usage de faire cela avec des clotures, même sans construction dans le langage lui même:

     Lock.with_lock l (fun _ -> now_do; something )

    permettent de visualiser qu'une instruction a un coût

    Je ne comprends pas où tu veux en venir avec cette affirmation. Je ne connais pas vraiment de construction qui cache le verrouillage. Si tu opposes ça au RAII décrit plus haut, en rust tu écrirais :

     let locked_int = RWLock::new(42);
     let mut int_ref = locked_int.write();
     if int_ref < 12 {
     *int_ref = 12;
     }
     // Ici le verrou est relaché de manière implicite par le destructeur de `int_ref`

    Je pense qu'en C++ la construction est similaire, le verrouillage (ce qui est vraiment couteux) est explicite, seul le déverouillage est implicite. Ce qui est un peu le cas avec "with" aussi, le deverouillage arrive à la fin du scope lexical du block with.