Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2600 connectés 

 

Sujet(s) à lire :
    - Who's who@Programmation
 

 Mot :   Pseudo :  
  Aller à la page :
 
 Page :   1  2  3  4  5  ..  22040  22041  22042  ..  27115  27116  27117  27118  27119  27120
Auteur Sujet :

[blabla@olympe] Le topic du modo, dieu de la fibre et du monde

n°2285692
nraynaud
lol
Posté le 28-07-2016 à 11:41:09  profilanswer
 

Reprise du message précédent :
https://msdn.microsoft.com/en-us/li [...] .110).aspx

Code :
  1. StreamReader sr = null;
  2.      try {
  3.         sr = new StreamReader(filename);
  4.         txt = sr.ReadToEnd();
  5.      }
  6.      finally {
  7.         if (sr != null) sr.Dispose();    
  8.      }


[:nul] l'exemple avec le if bidule==null


---------------
trainoo.com, c'est fini
mood
Publicité
Posté le 28-07-2016 à 11:41:09  profilanswer
 

n°2285693
Xavier_OM
Monarchiste régicide (fr quoi)
Posté le 28-07-2016 à 12:15:46  profilanswer
 

hephaestos a écrit :


Ah oui tu parles du finalyzer c'est ça ? Qui n'est pas le garbage collector, et du coup on a encore une façon de gérer certaines ressources, que l'auteur doit implémenter mais sur laquelle l'utilisateur ne doit pas compter.

 

Encore une fois : soit tu appelles Dispose() quand ça te convient, soit tu t'appuies sur le GC qui appellera le finalizer (avant de détruire l'objet) quand ça lui convient  [:spamafote] (sachant que comme dit Masklinn il obéit à des critères d'occupations mémoires lui).

 

C'est pas bien différent d'une ressource en C++ : soit tu libères la ressource quand tu veux (genre file.close()), soit tu laisses faire le mécanisme de gestion de la mémoire (en l'occurrence RAII) qui va appeler ton destructeur (contenant ton close) à la mort de la variable, ce qui peut vouloir dire à la sortie du scope, ou plus tard, ou carrément à la sortie de l'application c'est selon la portée de la variable.

 

J'ai fait beaucoup de C# et de C++, ce que tu gagnes avec RAII c'est que la durée de vie de ta variable == la durée de vie de ta ressource... ça change pas trop le fait de devoir se poser la question de cette durée de vie au final (mais ça fait du code moins verbeux, pas besoin de using {} ou de finally {} côté appelant)

Message cité 1 fois
Message édité par Xavier_OM le 28-07-2016 à 12:18:05

---------------
Il y a autant d'atomes d'oxygène dans une molécule d'eau que d'étoiles dans le système solaire.
n°2285694
Jubijub
Parce que je le VD bien
Posté le 28-07-2016 à 12:48:51  profilanswer
 

masklinn a écrit :


Ya pas l'option d'avoir deux machines sinon? Je connais pas son setup précis, mais day9 a l'air d'avoir une machine sur laquelle il joue et une autre qui s'occupe de l'encodage pour le streaming et l'archivage.


 
du coup c'est plus vraiment le meme budget : il te faut un deuxième PC, un boitier d'acquisition, etc...
je postule que c'est moins cher d'avoir un CPU avec plus de core et d'en dedier 1-2 à l'encodage


---------------
Jubi Photos : Flickr - 500px
n°2285695
hephaestos
Sanctis Recorda, Sanctis deus.
Posté le 28-07-2016 à 13:16:19  profilanswer
 

Xavier_OM a écrit :


 
Encore une fois : soit tu appelles Dispose() quand ça te convient, soit tu t'appuies sur le GC qui appellera le finalizer (avant de détruire l'objet) quand ça lui convient  [:spamafote] (sachant que comme dit Masklinn il obéit à des critères d'occupations mémoires lui).
 
C'est pas bien différent d'une ressource en C++ : soit tu libères la ressource quand tu veux (genre file.close()), soit tu laisses faire le mécanisme de gestion de la mémoire (en l'occurrence RAII) qui va appeler ton destructeur (contenant ton close) à la mort de la variable, ce qui peut vouloir dire à la sortie du scope, ou plus tard, ou carrément à la sortie de l'application c'est selon la portée de la variable.  
 
J'ai fait beaucoup de C# et de C++, ce que tu gagnes avec RAII c'est que la durée de vie de ta variable == la durée de vie de ta ressource... ça change pas trop le fait de devoir se poser la question de cette durée de vie au final (mais ça fait du code moins verbeux, pas besoin de using {} ou de finally {} côté appelant)


 
Du coup il faut se poser la question quand on utilise une ressource si on a besoin de la libérer tout de suite ou non. Pour éviter cela, la bonne pratique c'est de toujours Disposer ce qui est Disposeable (donc faire du RAII manuel, qui demande quand même d'inspecter la classe qu'on utilise pour voir si elle est Disposable). C'est sûr plutôt que de faire ça je peux me demander ce que je peux laisser se finalizer tranquillement en temps voulu, mais au final on en revient au fait que c'est l'utilisateur qui doit se poser les questions, et savoir quelles ressources sont utilisées par la classe qu'il appelle.

n°2285698
flo850
moi je
Posté le 28-07-2016 à 13:30:12  profilanswer
 

Jubijub a écrit :


 
du coup c'est plus vraiment le meme budget : il te faut un deuxième PC, un boitier d'acquisition, etc...
je postule que c'est moins cher d'avoir un CPU avec plus de core et d'en dedier 1-2 à l'encodage


ou un truc comme ça ? http://www.ldlc.com/fiche/PB00208766.html


---------------

n°2285699
masklinn
í dag viðrar vel til loftárása
Posté le 28-07-2016 à 13:32:40  profilanswer
 

hephaestos a écrit :

Du coup il faut se poser la question quand on utilise une ressource si on a besoin de la libérer tout de suite ou non.


D'une c'est pas une question très difficile, et de deux la question est inversée (comme tu le notes tu vas plutôt disposer par défaut) et tu vas vite te rendre comptes d'une resource utilisée après dispose.

hephaestos a écrit :

qui demande quand même d'inspecter la classe qu'on utilise pour voir si elle est Disposable


Qu'une classe soit disposable ou pas est généralement pas difficile à imaginer, et il y a probablement des linters pour une analyse statique basique (est-ce que tu dispose bien d'un IDisposable qui n'est pas leaké).

hephaestos a écrit :

C'est sûr plutôt que de faire ça je peux me demander ce que je peux laisser se finalizer tranquillement en temps voulu


Bah non pour la raison déjà mentionnée plusieurs fois que l'exécution du finalizer n'est pas déterministe (et fondamentalement pas garanti), tu vas vite te retrouver avec des deadlocks et des exhaustions de resources si t'as un GC autre que du refcounting (ou que tu crées des cycles avec un RC), ça devient pari et prières (que t'aies suffisamment de pression mémoire, et qu'aucun de tes objets disposable ne se retrouvent en oldgen).


---------------
I mean, true, a cancer will probably destroy its host organism. But what about the cells whose mutations allow them to think outside the box by throwing away the limits imposed by overbearing genetic regulations? Isn't that a good thing?
n°2285700
gfive
Posté le 28-07-2016 à 13:35:01  profilanswer
 

Sondage: pour organiser et mettre en ligne des photos, vous utilisez quoi?  
 
Pour le moment j'ai Picasa, avec un machin pour partager le DB entre plusieurs users, mais c'est un peu fini...
 
Idéalement, un truc qui permettrait de centraliser tout ça sur le NAS serait top.
 


---------------
Tous les sud africains sont ségrégationistes, à part Ted. (P. Desproges)
n°2285701
flo850
moi je
Posté le 28-07-2016 à 13:36:34  profilanswer
 

owncloud  


---------------

n°2285703
Xavier_OM
Monarchiste régicide (fr quoi)
Posté le 28-07-2016 à 13:50:57  profilanswer
 

masklinn a écrit :


Qu'une classe soit disposable ou pas est généralement pas difficile à imaginer, et il y a probablement des linters pour une analyse statique basique (est-ce que tu dispose bien d'un IDisposable qui n'est pas leaké).


 
J'avoue que "xxx is not disposed" sans avoir à lancer .Net Memory Profiler ça serait quand même bien :/


---------------
Il y a autant d'atomes d'oxygène dans une molécule d'eau que d'étoiles dans le système solaire.
n°2285705
gfive
Posté le 28-07-2016 à 14:36:18  profilanswer
 


 
Ca répond pas au besoin d'organisation, si?
 
Enfin, ce qui est top avec Picasa, c'est l'organisation en dossiers par date (ça, c'est simpliste) et les albums : une photo peut être dans un ou plusieurs albums (mais physiquement elle n'est qu'une fois dans la collection), et tu choisis de publier (ou pas) par album.
 
Sans compter les features sympa d'impression, recadrage, yeux rouges, etc... simples à utiliser.


---------------
Tous les sud africains sont ségrégationistes, à part Ted. (P. Desproges)
mood
Publicité
Posté le 28-07-2016 à 14:36:18  profilanswer
 

n°2285706
gooopil
pfiew
Posté le 28-07-2016 à 14:55:15  profilanswer
 

gfive a écrit :


 
Ca répond pas au besoin d'organisation, si?
 
Enfin, ce qui est top avec Picasa, c'est l'organisation en dossiers par date (ça, c'est simpliste) et les albums : une photo peut être dans un ou plusieurs albums (mais physiquement elle n'est qu'une fois dans la collection), et tu choisis de publier (ou pas) par album.
 
Sans compter les features sympa d'impression, recadrage, yeux rouges, etc... simples à utiliser.


Flickr ?

n°2285707
kadreg
profil: Utilisateur
Posté le 28-07-2016 à 14:56:35  profilanswer
 

tree


---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
n°2285709
ixemul
Nan mais sans blague ! ⚡
Posté le 28-07-2016 à 15:23:37  profilanswer
 


 
la version ligne de commande ou fenêtrée ?


---------------
VA APPRENDRE ET REVIENS QUAND TU SAIS, SINON ABSTIENT TOI C'EST UN GRAND CONSEIL QUE JE TE DONNE... TU ES INCOMPÉTENT ET C'EST UNE RÉALITÉ, TU N'AS RIEN A FAIRE ICI FAUT S'Y CONNAITRE ... -Jojo1998 - RIP - http://tinyurl.com/qc47ftk
n°2285710
kadreg
profil: Utilisateur
Posté le 28-07-2016 à 15:33:30  profilanswer
 

la version saas :o


---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
n°2285713
ratibus
Posté le 28-07-2016 à 16:36:30  profilanswer
 
n°2285714
nraynaud
lol
Posté le 28-07-2016 à 16:50:34  profilanswer
 

lol


---------------
trainoo.com, c'est fini
n°2285715
Plam
Bear Metal
Posté le 28-07-2016 à 16:53:14  profilanswer
 

Excellent ce farm bot :love:


---------------
Spécialiste du bear metal
n°2285716
Plam
Bear Metal
Posté le 28-07-2016 à 16:54:30  profilanswer
 

Ça donne envie de faire des trucs qui sont pas que des softs mais qui agissent/se déplacent IRL. J'ai déjà dit, mais je remet un couche : quand je serai pété de thune (  [:agkklr] ) je monterai une startup pour le fun avec nraynal (entre autre) pour faire des bidules réels :love:


---------------
Spécialiste du bear metal
n°2285717
hephaestos
Sanctis Recorda, Sanctis deus.
Posté le 28-07-2016 à 16:54:32  profilanswer
 

masklinn a écrit :


D'une c'est pas une question très difficile, et de deux la question est inversée (comme tu le notes tu vas plutôt disposer par défaut) et tu vas vite te rendre comptes d'une resource utilisée après dispose.


 

masklinn a écrit :


Qu'une classe soit disposable ou pas est généralement pas difficile à imaginer, et il y a probablement des linters pour une analyse statique basique (est-ce que tu dispose bien d'un IDisposable qui n'est pas leaké).


 

masklinn a écrit :


Bah non pour la raison déjà mentionnée plusieurs fois que l'exécution du finalizer n'est pas déterministe (et fondamentalement pas garanti), tu vas vite te retrouver avec des deadlocks et des exhaustions de resources si t'as un GC autre que du refcounting (ou que tu crées des cycles avec un RC), ça devient pari et prières (que t'aies suffisamment de pression mémoire, et qu'aucun de tes objets disposable ne se retrouvent en oldgen).


Oui donc on en revient à la remarque initiale : c'est à l'utilisateur d'appeler Dispose tout le temps, et donc de gérer manuellement tout ce qui n'est pas la mémoire gérée par le GC.
 
Je n'ai pas dit que c'était pas bien ou que c'était difficile, simplement j'ai l'impression d'avoir la charge d'un truc qui se fait par défaut tout seul en C++, tandis que par ailleurs je ne trouve pas flagrant le gain apporté par le GC.

n°2285718
vapeur_coc​honne
Stig de Loisir
Posté le 28-07-2016 à 16:56:40  profilanswer
 

Samedi j ai du mo de ca aurai ete le bon moment pour couler ma dalle :/ ou monter le chalet


---------------
marilou repose sous la neige
n°2285719
Profil sup​primé
Posté le 28-07-2016 à 16:58:27  answer
 

C'est moi ou soundcloud et peut-être d'autre, fonctionne mal.
 
Si je fais une progression logique de ma musique je souhaiterais avoir le dernier morceau à la fin de la liste !
Là il présente les derniers morceau en premier.
 
 
 
Encore un coup des saxon.


Message édité par Profil supprimé le 28-07-2016 à 16:58:49
n°2285720
vapeur_coc​honne
Stig de Loisir
Posté le 28-07-2016 à 17:08:29  profilanswer
 

Quand tu penses que marie trintignant elle n a fait que des mauvais film, et cantat plein de bon cd, gu te dit que les lois sont mal faite


---------------
marilou repose sous la neige
n°2285721
Jubijub
Parce que je le VD bien
Posté le 28-07-2016 à 17:08:31  profilanswer
 

Hello,
 
Je voudrais un multimetre basique, vous recommandriez quoi ? c'est surtout pour tester si 220v ou pas 220v dans certaines lampes de la maison qui ont tendance a griller souvent
 
http://www.distrelec.ch/fr/outils- [...] =10&page=1


---------------
Jubi Photos : Flickr - 500px
n°2285722
vapeur_coc​honne
Stig de Loisir
Posté le 28-07-2016 à 17:12:41  profilanswer
 

Putain la tv
....[:mlc]

 

Les barbus ont égorgé un curé.
Hop 5 points pour marine
Et dire que je verrai ptet pas ca :/
Une guerre civile.
Et mon meilleur pote est tunisien, j ai pas de chance, je vais pas l heberger chez moi si on les rafles quand meme.


---------------
marilou repose sous la neige
n°2285723
vapeur_coc​honne
Stig de Loisir
Posté le 28-07-2016 à 17:13:48  profilanswer
 

Jubijub a écrit :

Hello,

 

Je voudrais un multimetre basique, vous recommandriez quoi ? c'est surtout pour tester si 220v ou pas 220v dans certaines lampes de la maison qui ont tendance a griller souvent

 

http://www.distrelec.ch/fr/outils- [...] =10&page=1


10e en gsb
Sinon prend celui que t a piqué à l ecole et change les piles


---------------
marilou repose sous la neige
n°2285725
nraynaud
lol
Posté le 28-07-2016 à 17:29:24  profilanswer
 

Jubijub a écrit :

Hello,
 
Je voudrais un multimetre basique, vous recommandriez quoi ? c'est surtout pour tester si 220v ou pas 220v dans certaines lampes de la maison qui ont tendance a griller souvent
 
http://www.distrelec.ch/fr/outils- [...] =10&page=1


et tu penses que ton 220V il aurait quoi comme défaut ?


---------------
trainoo.com, c'est fini
n°2285726
vapeur_coc​honne
Stig de Loisir
Posté le 28-07-2016 à 17:35:30  profilanswer
 

Plus 1 avec nray.
Le probleme vient soit des.point de centre soit des lampes


---------------
marilou repose sous la neige
n°2285733
el muchach​o
Comfortably Numb
Posté le 28-07-2016 à 19:30:14  profilanswer
 

hephaestos a écrit :


Du coup il faut se poser la question quand on utilise une ressource si on a besoin de la libérer tout de suite ou non. Pour éviter cela, la bonne pratique c'est de toujours Disposer ce qui est Disposeable (donc faire du RAII manuel, qui demande quand même d'inspecter la classe qu'on utilise pour voir si elle est Disposable). C'est sûr plutôt que de faire ça je peux me demander ce que je peux laisser se finalizer tranquillement en temps voulu, mais au final on en revient au fait que c'est l'utilisateur qui doit se poser les questions, et savoir quelles ressources sont utilisées par la classe qu'il appelle.


En fait, quels sont les cas d'utilisation de Dispose() ?
 
Si tu dois libérer immédiatement la ressource, parce qu'elle doit être utilisée par ailleurs (un fichier "totoz" écrit par toi et écrit/lu par un autre processus, par ex), je pense qu'il vaut largement mieux faire un close()/unlock() et garder le handle sur le fichier. C'est bien plus rapide que de faire à chaque fois une allocation (qui in fine va faire un appel système pour obtenir le handle du fichier) puis un Dispose() à chaque fois que tu veux ouvrir et écrire à nouveau le fichier. C'est une gestion manuelle, mais c'est vrai aussi en C++. Sinon, effectivement, si tu fais des new File("totoz" ) à tire larigot en laissant le GC s'épuiser à les fermer un à un, tu vas occuper des milliers de handles de fichiers, là où en C++ le RAII nettoie proprement derrière lui.
Idem pour la gestion de sockets.
 
Si tu fais juste une seule ouverture/fermeture du fichier, tu t'en fous que le GC soit non déterministe. Tu fais ton close() à la fin et basta.
 
Au final, Dispose(), le cas d'utilisation que je vois, c'est si il y a un besoin urgent de faire un nettoyage quand le GC n'a pas pu passer. Ce sont vraiment dans des applications très spécifiques où les perfs sont critiques (auquel cas de toute façon, la question se pose si le C++ n'est pas plus approprié). Perso je n'ai jamais eu à l'utiliser.


---------------
Les aéroports où il fait bon attendre, voila un topic qu'il est bien
n°2285734
el muchach​o
Comfortably Numb
Posté le 28-07-2016 à 19:45:14  profilanswer
 

Plam a écrit :

Excellent ce farm bot :love:


J'avoue c'est classe.  :jap:  
Reste plus qu'il détecte et allume les limaces et c'est bon.  :D


---------------
Les aéroports où il fait bon attendre, voila un topic qu'il est bien
n°2285735
el muchach​o
Comfortably Numb
Posté le 28-07-2016 à 19:52:04  profilanswer
 

Jubijub a écrit :

Hello,
 
Je voudrais un multimetre basique, vous recommandriez quoi ? c'est surtout pour tester si 220v ou pas 220v dans certaines lampes de la maison qui ont tendance a griller souvent
 
http://www.distrelec.ch/fr/outils- [...] =10&page=1


Sauf si tout est à refaire électriquement chez toi, ce sont probablement les ampoules qui sont pourries. Change de marque.


---------------
Les aéroports où il fait bon attendre, voila un topic qu'il est bien
n°2285737
Shinuza
This is unexecpected
Posté le 28-07-2016 à 20:47:56  profilanswer
 

masklinn a écrit :


Ya pas l'option d'avoir deux machines sinon? Je connais pas son setup précis, mais day9 a l'air d'avoir une machine sur laquelle il joue et une autre qui s'occupe de l'encodage pour le streaming et l'archivage.

Je peux streamer comme ça, mais il faut que je baisse la qualité.


---------------
Mains power can kill, and it will hurt the entire time you’re dying from it.
n°2285738
gatsu35
Blablaté par Harko
Posté le 28-07-2016 à 22:09:57  profilanswer
 

Plam a écrit :

Excellent ce farm bot :love:


JE préfère farmer du pokemon
http://reho.st/medium/self/b6b9796241c27a9397268a1490c179c4548aff10.png

n°2285739
masklinn
í dag viðrar vel til loftárása
Posté le 28-07-2016 à 22:23:49  profilanswer
 

vapeur_cochonne a écrit :

Samedi j ai du mo de ca aurai ete le bon moment pour couler ma dalle :/ ou monter le chalet


Ça empêche pas remarqués, nray cherche du boulot tu peux lui faire couler ta dalle :o


---------------
I mean, true, a cancer will probably destroy its host organism. But what about the cells whose mutations allow them to think outside the box by throwing away the limits imposed by overbearing genetic regulations? Isn't that a good thing?
n°2285740
Dion
Acceuil
Posté le 28-07-2016 à 22:24:53  profilanswer
 

Mais 0x sait pas couler de dalle, qui va le faire ? :heink:


---------------
It is not called show art
n°2285741
masklinn
í dag viðrar vel til loftárása
Posté le 28-07-2016 à 22:26:14  profilanswer
 

el muchacho a écrit :

Tu fais ton close() à la fin et basta.
 
Au final, Dispose(), le cas d'utilisation que je vois, c'est si il y a un besoin urgent de faire un nettoyage quand le GC n'a pas pu passer. Ce sont vraiment dans des applications très spécifiques où les perfs sont critiques (auquel cas de toute façon, la question se pose si le C++ n'est pas plus approprié). Perso je n'ai jamais eu à l'utiliser.


Oui mais non dispose c'est pas plus rapide que close, l'intérêt c'est que using/dispose fonctionne proprement en cas d'exceptions et avec des resources imbriquées,  c'est simple à utiliser correctement.

Message cité 1 fois
Message édité par masklinn le 28-07-2016 à 22:27:36

---------------
I mean, true, a cancer will probably destroy its host organism. But what about the cells whose mutations allow them to think outside the box by throwing away the limits imposed by overbearing genetic regulations? Isn't that a good thing?
n°2285745
el muchach​o
Comfortably Numb
Posté le 29-07-2016 à 08:35:10  profilanswer
 

masklinn a écrit :


Oui mais non dispose c'est pas plus rapide que close, l'intérêt c'est que using/dispose fonctionne proprement en cas d'exceptions et avec des resources imbriquées,  c'est simple à utiliser correctement.


Je ne pas dit que c'était plus rapide. En fait j'ai dit exactement le contraire mais j'ai eu la flemme de détailler ce qui me semblait évident.

 

Sinon ce que tu dis est vrai, mais ça n'est en rien différent du C++, d'un côté tu implémentés IDisposeable, de l'autre tu écris un destructeur. Le pb d'Hepha c'est pas tant ce qui doit être fait, mais quand le nettoyage doit être exécuté.

 

Edit: effectivement, le RAII à un léger avantage ici parce que le nettoyage de l'objet Parent est bloqué même si un close a été effectué, mais en pratique, ça n'arrive pas souvent que ça pose un réel pb

Message cité 2 fois
Message édité par el muchacho le 29-07-2016 à 09:03:26

---------------
Les aéroports où il fait bon attendre, voila un topic qu'il est bien
n°2285746
el muchach​o
Comfortably Numb
Posté le 29-07-2016 à 08:39:50  profilanswer
 

Saloperie de correcteur iphone


---------------
Les aéroports où il fait bon attendre, voila un topic qu'il est bien
n°2285747
Dion
Acceuil
Posté le 29-07-2016 à 08:43:12  profilanswer
 

Ca se désactive
 
Généralement ceux qui essaient le réactivent rapidement


---------------
It is not called show art
n°2285748
kadreg
profil: Utilisateur
Posté le 29-07-2016 à 09:15:29  profilanswer
 

Jubijub a écrit :

Hello,
 
Je voudrais un multimetre basique, vous recommandriez quoi ? c'est surtout pour tester si 220v ou pas 220v dans certaines lampes de la maison qui ont tendance a griller souvent
 
http://www.distrelec.ch/fr/outils- [...] =10&page=1


 
depuis que j'ai changé de marques d'ampoules, j'ai arrêté d'en griller.  
 
fun fact :j'avais des keria avec échange. Tous les 2 mois, je passait à la boutique, et on me refilait gratuitement leurs remplaçantes, qui regrillait toujours aussi vite.


---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
n°2285749
hephaestos
Sanctis Recorda, Sanctis deus.
Posté le 29-07-2016 à 09:33:58  profilanswer
 

el muchacho a écrit :


En fait, quels sont les cas d'utilisation de Dispose() ?
 
Si tu dois libérer immédiatement la ressource, parce qu'elle doit être utilisée par ailleurs (un fichier "totoz" écrit par toi et écrit/lu par un autre processus, par ex), je pense qu'il vaut largement mieux faire un close()/unlock() et garder le handle sur le fichier. C'est bien plus rapide que de faire à chaque fois une allocation (qui in fine va faire un appel système pour obtenir le handle du fichier) puis un Dispose() à chaque fois que tu veux ouvrir et écrire à nouveau le fichier. C'est une gestion manuelle, mais c'est vrai aussi en C++. Sinon, effectivement, si tu fais des new File("totoz" ) à tire larigot en laissant le GC s'épuiser à les fermer un à un, tu vas occuper des milliers de handles de fichiers, là où en C++ le RAII nettoie proprement derrière lui.
Idem pour la gestion de sockets.
 
Si tu fais juste une seule ouverture/fermeture du fichier, tu t'en fous que le GC soit non déterministe. Tu fais ton close() à la fin et basta.
 
Au final, Dispose(), le cas d'utilisation que je vois, c'est si il y a un besoin urgent de faire un nettoyage quand le GC n'a pas pu passer. Ce sont vraiment dans des applications très spécifiques où les perfs sont critiques (auquel cas de toute façon, la question se pose si le C++ n'est pas plus approprié). Perso je n'ai jamais eu à l'utiliser.


 

el muchacho a écrit :


Je ne pas dit que c'était plus rapide. En fait j'ai dit exactement le contraire mais j'ai eu la flemme de détailler ce qui me semblait évident.
 
Sinon ce que tu dis est vrai, mais ça n'est en rien différent du C++, d'un côté tu implémentés IDisposeable, de l'autre tu écris un destructeur. Le pb d'Hepha c'est pas tant ce qui doit être fait, mais quand le nettoyage doit être exécuté.
 
Edit: effectivement, le RAII à un léger avantage ici parce que le nettoyage de l'objet Parent est bloqué même si un close a été effectué, mais en pratique, ça n'arrive pas souvent que ça pose un réel pb


 
Déjà un objet Disposable, on doit le disposer, c'est la philosophie du truc. Je te fournis une interface facile à utiliser, tu l'utilises, point. Tu n'es pas sensé choisir les moments où tu l'utilises et les fois où tu comptes sur le finalizeur. Tu peux évidemment mais ce n'est pas la philosophie du concept.
 
Du coup au final ce qui me chiffonne c'est simplement de devoir utiliser ce pattern alors que précisément la gestion automatisée des ressources est l'un des objectifs des langages haut niveaux. Et comme ce pattern est une conséquence directe de l'existence du GC, je me posais la question de l'utilité de ce dernier, utilité qui comme tu l'as fait remarqué est moins flagrante face aux dernières versions de c++.  

n°2285750
Xavier_OM
Monarchiste régicide (fr quoi)
Posté le 29-07-2016 à 09:37:54  profilanswer
 

el muchacho a écrit :


 
Edit: effectivement, le RAII à un léger avantage ici parce que le nettoyage de l'objet Parent est bloqué même si un close a été effectué, mais en pratique, ça n'arrive pas souvent que ça pose un réel pb


 
Sauf que le RAII pose un problème sérieux quand même, on te dit "faut libérer les ressources dans le destructeur", mais on te dit aussi qu'un destructeur C++ ne doit pas lancer d'exception ("You can throw an exception in a destructor, but that exception must not leave the destructor; if a destructor exits by emitting an exception, all kinds of bad things are likely to happen because the basic rules of the standard library and the language itself will be violated." ), donc c'est pas toujours si pratique que ça...


---------------
Il y a autant d'atomes d'oxygène dans une molécule d'eau que d'étoiles dans le système solaire.
mood
Publicité
Posté le   profilanswer
 

 Page :   1  2  3  4  5  ..  22040  22041  22042  ..  27115  27116  27117  27118  27119  27120

Aller à :
Ajouter une réponse
 

Sujets relatifs
Plus de sujets relatifs à : [blabla@olympe] Le topic du modo, dieu de la fibre et du monde


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)