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

 


 Mot :   Pseudo :  
 
 Page :   1  2
Page Suivante
Auteur Sujet :

Pour les artistes: quel code préférez vous?

n°951514
chrisbk
-
Posté le 12-01-2005 à 11:36:28  profilanswer
 

Reprise du message précédent :

benou a écrit :


Y a pas des cas où un release manuel des ressources est nécessaire ? (cas où le destructeur ne fait pas TOUT le boulot)  


 
faut revoir le destructeur, alors
 

benou a écrit :


(remarque : c'est moche, mais en Java tu peux aussi faire les release dans chaque catch, t'es pas obligé d'utiliser finally ;))


 
et si tu catches pas l'exception, (si tu la laisse remonter), t'as pas un leger pb ?
 
 

mood
Publicité
Posté le 12-01-2005 à 11:36:28  profilanswer
 

n°951517
chrisbk
-
Posté le 12-01-2005 à 11:36:56  profilanswer
 

nraynaud a écrit :

tu veux une fessée ?


 
pour avoir posé une question ? J'aurais mieux fait de rester dans mon ignorance, c'est ca ton point ?

n°951519
Lam's
Profil: bas.
Posté le 12-01-2005 à 11:42:45  profilanswer
 

benou a écrit :


y a pas de finally en C++ ?


Y en a pas besoin.  
 
Mais perso, je mets souvent un commentaire marrant (enfin, marrant pour moi) à la fin de mes fonctions quand il se passe quelque chose de rigolo dans un de mes destructeurs. C'est l'un des rares endroits où je préconise de mettre un commentaire qui explicite ce qui se passe...

n°951520
Taz
bisounours-codeur
Posté le 12-01-2005 à 11:44:29  profilanswer
 

benou a écrit :


 
Y a pas des cas où un release manuel des ressources est nécessaire ? (cas où le destructeur ne fait pas TOUT le boulot)  
y a pas de finally en C++ ?
 

ben justement tu fais un destructeur pour assurer toutes tes contraintes. Code & Forget
 

benou a écrit :


(remarque : c'est moche, mais en Java tu peux aussi faire les release dans chaque catch, t'es pas obligé d'utiliser finally ;))

comme tu dis : dans CHAQUE. ça devient pas gérable

n°951521
benou
Posté le 12-01-2005 à 11:47:46  profilanswer
 

Taz a écrit :

ben justement tu fais un destructeur pour assurer toutes tes contraintes. Code & Forget


 :jap:  
 

Taz a écrit :

comme tu dis : dans CHAQUE. ça devient pas gérable


on est d'accord, c'était juste pour dire que c'était très utile, pas ABSOLUMENT NECESSAIRE ;)


---------------
ma vie, mon oeuvre - HomePlayer
n°951522
chrisbk
-
Posté le 12-01-2005 à 11:50:56  profilanswer
 

benou a écrit :


on est d'accord, c'était juste pour dire que c'était très utile, pas ABSOLUMENT NECESSAIRE ;)


 
oué, m'enfin a ce compte la y'a vraiment plus grand chose d'absolument nécessaire, comme les exceptions par exemple [:joce]

n°951523
benou
Posté le 12-01-2005 à 11:51:49  profilanswer
 

chrisbk a écrit :

oué, m'enfin a ce compte la y'a vraiment plus grand chose d'absolument nécessaire, comme les exceptions par exemple [:joce]


[:ddr555]


---------------
ma vie, mon oeuvre - HomePlayer
n°951526
nraynaud
lol
Posté le 12-01-2005 à 12:07:51  profilanswer
 

chrisbk a écrit :

pour avoir posé une question ? J'aurais mieux fait de rester dans mon ignorance, c'est ca ton point ?


donc non, ça n'appelle pas finalize() en soi.
finalize n'est appellé que par le GC.

n°951529
chrisbk
-
Posté le 12-01-2005 à 12:11:54  profilanswer
 

nraynaud a écrit :

donc non, ça n'appelle pas finalize() en soi.
finalize n'est appellé que par le GC.


 
oué bon j'ai confondu avec dispose() [:icon7]
mais ma question reste la meme

n°951530
nraynaud
lol
Posté le 12-01-2005 à 12:14:32  profilanswer
 

Taz a écrit :

usage canonique
 
 
res.acquire()
 
try
{
  // ...
}
finally
{
  res.release();
}


et je souligne qu'on ne tente pas de fermer une ressource qu'on n'a pas ouverte (ie le res.acquire() n'a rien à faire dans le try)

mood
Publicité
Posté le 12-01-2005 à 12:14:32  profilanswer
 

n°951534
nraynaud
lol
Posté le 12-01-2005 à 12:20:01  profilanswer
 

chrisbk a écrit :

oué bon j'ai confondu avec dispose() [:icon7]
mais ma question reste la meme


oui.
http://msdn.microsoft.com/library/ [...] c_8_13.asp
 

n°951542
Taz
bisounours-codeur
Posté le 12-01-2005 à 12:32:07  profilanswer
 

nraynaud a écrit :

donc non, ça n'appelle pas finalize() en soi.
finalize n'est appellé que par le GC.


ou pas.

n°951612
duchzeworl​d
Posté le 12-01-2005 à 13:41:10  profilanswer
 

benou a écrit :


 
(remarque : c'est moche, mais en Java tu peux aussi faire les release dans chaque catch, t'es pas obligé d'utiliser finally ;))


 
Si tu le fais uniquement dans le blocs catch, ça ne fonctionnera pas correctement. Il faut aussi faire le release à la fin du bloc try (pour le cas sans erreur). Finally permet de n'écrire tous les releases qu'à un seul endroit, qu'il y ait eu une exception ou non, que l'on gère une seule ou plusieurs exceptions.

n°951648
beemer
Posté le 12-01-2005 à 14:22:44  profilanswer
 

duchzeworld a écrit :

Si tu le fais uniquement dans le blocs catch, ça ne fonctionnera pas correctement. Il faut aussi faire le release à la fin du bloc try (pour le cas sans erreur). Finally permet de n'écrire tous les releases qu'à un seul endroit, qu'il y ait eu une exception ou non, que l'on gère une seule ou plusieurs exceptions.


ou tu le fais apres le catch si tu montes pas l'exception dans le catch ....

n°951717
Taz
bisounours-codeur
Posté le 12-01-2005 à 15:42:02  profilanswer
 


bon personne relève. L'appel à finalize() n'est pas garanti.

n°951723
nraynaud
lol
Posté le 12-01-2005 à 15:46:38  profilanswer
 

taz > merci, on savait pas [:mlc]
 
tu comptes nous refaire le cours sur la file des f-reachables et la résurection etc. ?

n°951726
schnapsman​n
Zaford Beeblefect
Posté le 12-01-2005 à 15:49:37  profilanswer
 

nraynaud a écrit :


tu comptes nous refaire le cours sur la file des f-reachables et la résurection etc. ?


un pavé! un pavé!


---------------
From now on, you will speak only when spoken to, and the first and last words out of your filthy sewers will be "Sir!"
n°951730
chrisbk
-
Posté le 12-01-2005 à 15:53:32  profilanswer
 

AH NE ME DEGRADEZ PAS LA BONNE AMBIANCE PUTAIN :fou: :mad:

n°951732
Taz
bisounours-codeur
Posté le 12-01-2005 à 15:56:36  profilanswer
 

nraynaud a écrit :

taz > merci, on savait pas [:mlc]
 
tu comptes nous refaire le cours sur la file des f-reachables et la résurection etc. ?


le prend pas comme ça. Quand je vois les questions de benou, je me dis que y a des petits trucs à éclaircir. Alors nous on déconne, mais on est pas les seuls à lire ce topic.

n°951752
push
/dev/random
Posté le 12-01-2005 à 16:31:26  profilanswer
 

oui merçi de penser aux boulets, donc pq l'appel à finalize() n'est pas garantit ?


Message édité par push le 12-01-2005 à 16:31:48
n°951755
chrisbk
-
Posté le 12-01-2005 à 16:34:04  profilanswer
 

push a écrit :

oui merçi de penser aux boulets, donc pq l'appel à finalize() n'est pas garantit ?


 
 
bin paskil est fait que quand le GC collecte, et si le GC collecte pas bin il est pas fait

n°951779
schnapsman​n
Zaford Beeblefect
Posté le 12-01-2005 à 16:54:51  profilanswer
 

chrisbk a écrit :

bin paskil est fait que quand le GC collecte, et si le GC collecte pas bin il est pas fait


j'ajoote que même si la JVM se termine normalement, les objets ne sont pas forcément garbage collectés (tests inside avec ghost ref et cie)


---------------
From now on, you will speak only when spoken to, and the first and last words out of your filthy sewers will be "Sir!"
n°951820
therier
heu...coucou!
Posté le 12-01-2005 à 17:25:53  profilanswer
 

schnapsmann a écrit :

j'ajoote que même si la JVM se termine normalement, les objets ne sont pas forcément garbage collectés (tests inside avec ghost ref et cie)


 
Heu... t'es sûr?  :heink:  

n°951829
schnapsman​n
Zaford Beeblefect
Posté le 12-01-2005 à 17:37:56  profilanswer
 

therier a écrit :

Heu... t'es sûr?  :heink:


voui, avec une 1.5:

Code :
  1. package test;
  2. import java.lang.ref.PhantomReference;
  3. import java.lang.ref.ReferenceQueue;
  4. import java.lang.ref.Reference;
  5. import java.math.BigInteger;
  6. import java.util.Hashtable;
  7. class Foo
  8. {
  9. private static BigInteger instCounter = BigInteger.ONE;
  10. private BigInteger instNumber;
  11. private byte[] wasteMemory;
  12. public Foo()
  13. {
  14.  instNumber = instCounter;
  15.  instCounter = instCounter.add(BigInteger.ONE);
  16.  wasteMemory = new byte[8*1024];
  17.  System.out.println("Foo.Foo() #" + instNumber);
  18. }
  19. BigInteger getClonedId()
  20. {
  21.  return new BigInteger(instNumber.toByteArray());
  22. }
  23. public void finalize()
  24. {
  25.  System.out.println("finalize Foo #" + instNumber);
  26. }
  27. }
  28. class FooBomb implements Runnable
  29. {
  30. private Hashtable<Reference<Foo>, BigInteger> hash;
  31. private ReferenceQueue<Foo> refQueue;
  32. public FooBomb(Hashtable<Reference<Foo>, BigInteger> hash, ReferenceQueue<Foo> refQueue)
  33. {
  34.  this.hash = hash;
  35.  this.refQueue = refQueue;
  36. }
  37. public void run()
  38. {
  39.  try
  40.  {
  41.   while(!Thread.currentThread().isInterrupted())
  42.   {
  43.    Foo foo = new Foo();
  44.    hash.put(new PhantomReference(foo, refQueue), foo.getClonedId());
  45.   }
  46.   System.err.println("exiting bomb thread" );
  47.  }
  48.  catch(Exception exc)
  49.  {
  50.   exc.printStackTrace();
  51.  }
  52. }
  53. }
  54. class FooLegist implements Runnable
  55. {
  56. private Hashtable<Reference<Foo>, BigInteger> hash;
  57. private ReferenceQueue<Foo> refQueue;
  58. public FooLegist(Hashtable<Reference<Foo>, BigInteger> hash, ReferenceQueue<Foo> refQueue)
  59. {
  60.  this.hash = hash;
  61.  this.refQueue = refQueue;
  62. }
  63. public void run()
  64. {
  65.  try
  66.  {
  67.   while(true)
  68.   {
  69.    boolean stop=false;
  70.    Reference<? extends Foo> deadFoo=null;
  71.    try
  72.    {
  73.     deadFoo = refQueue.remove();
  74.    }
  75.    catch(InterruptedException exc)
  76.    {
  77.     stop=true;
  78.    }
  79.    if(stop)
  80.    {
  81.     break;
  82.    }
  83.    else
  84.    {
  85.     System.out.println("Foo #" + hash.get(deadFoo) + " was finalized" );
  86.     hash.remove(deadFoo);
  87.    }
  88.   }
  89.   System.err.println("exiting legist thread" );
  90.  }
  91.  catch(Exception exc)
  92.  {
  93.   exc.printStackTrace();
  94.  }
  95. }
  96. }
  97. public class WeakTest
  98. {
  99. public static void test1() throws Exception
  100. {
  101.  Hashtable<Reference<Foo>, BigInteger> hash = new Hashtable<Reference<Foo>, BigInteger>();
  102.  ReferenceQueue<Foo> refQueue = new ReferenceQueue<Foo>();
  103.  FooBomb bomb = new FooBomb(hash, refQueue);
  104.  FooLegist legist = new FooLegist(hash, refQueue);
  105.  Thread thread1 = new Thread(bomb);
  106.  Thread thread2 = new Thread(legist);
  107.  thread1.start();
  108.  thread2.start();
  109.  Thread.currentThread().sleep(10000);
  110.  thread1.interrupt();
  111.  thread2.interrupt();
  112.  thread1.join();
  113.  thread2.join();
  114.  System.err.println("all threads have been interrupted" );
  115. }
  116. public static void main(String[] args) throws Exception
  117. {
  118.  test1();
  119.  System.err.println("exiting main thread" );
  120. }
  121. }


---------------
From now on, you will speak only when spoken to, and the first and last words out of your filthy sewers will be "Sir!"
n°951859
therier
heu...coucou!
Posté le 12-01-2005 à 18:38:53  profilanswer
 


Ok, là ton programme est fini, par contre ta JVM, elle tourne plus?  :heink:

n°951862
schnapsman​n
Zaford Beeblefect
Posté le 12-01-2005 à 18:43:09  profilanswer
 

therier a écrit :

Ok, là ton programme est fini, par contre ta JVM, elle tourne plus?  :heink:


non, elle marche plus (OMFG inside :o)


---------------
From now on, you will speak only when spoken to, and the first and last words out of your filthy sewers will be "Sir!"
n°951863
beemer
Posté le 12-01-2005 à 18:44:26  profilanswer
 

:??:

n°951864
therier
heu...coucou!
Posté le 12-01-2005 à 18:46:02  profilanswer
 

schnapsmann a écrit :

non, elle marche plus (OMFG inside :o)


 
Qu'entends tu par omfg?  :??:  
 
 

n°951870
schnapsman​n
Zaford Beeblefect
Posté le 12-01-2005 à 18:52:18  profilanswer
 

j'ai toujours subodoré que cela voulais dire un truc comme 'Oh My Fucking God!'


---------------
From now on, you will speak only when spoken to, and the first and last words out of your filthy sewers will be "Sir!"
n°951872
therier
heu...coucou!
Posté le 12-01-2005 à 18:55:38  profilanswer
 

schnapsmann a écrit :

j'ai toujours subodoré que cela voulais dire un truc comme 'Oh My Fucking God!'


 
Mais l'alloc memoire se fait par la JVM et pas de manière 'native', je vois pas comment en arretant la JVM il peut y avoir de la mémoire non libérée... A moins que ce soit le process d'alloc de la JVM qui soit buggé!

n°951873
beemer
Posté le 12-01-2005 à 18:55:52  profilanswer
 

euh, donc tu dis que ton programme est fini (la jvm aussi, forcement) et t'as tjs des objets qui trainent ?! dans le cyberespace?! faudrait qu'on m'explique la

n°951874
beemer
Posté le 12-01-2005 à 18:56:48  profilanswer
 

therier a écrit :

Mais l'alloc memoire se fait par la JVM et pas de manière 'native', je vois pas comment en arretant la JVM il peut y avoir de la mémoire non libérée... A moins que ce soit le process d'alloc de la JVM qui soit buggé!


bugge ou pas si il est fini il bouffe plus de memoire ...

n°951882
schnapsman​n
Zaford Beeblefect
Posté le 12-01-2005 à 19:08:19  profilanswer
 

beemer a écrit :

bugge ou pas si il est fini il bouffe plus de memoire ...


euh quand la JVM s'arrete, l'OS restitue toute le mémoire de la JVM hein :whistle:


---------------
From now on, you will speak only when spoken to, and the first and last words out of your filthy sewers will be "Sir!"
n°951922
Jubijub
Parce que je le VD bien
Posté le 12-01-2005 à 20:06:41  profilanswer
 

pour en revenir au début, c cradingue l'utilisation d'exception comme ca...
 
sémantiquement, c pas correct...surtout pour qqc d'aussi logique que la fin d'un tableau...ca n'a rien d'exceptionnel, ca arrivera forcément...


---------------
Jubi Photos : Flickr - 500px
n°952320
beemer
Posté le 13-01-2005 à 13:40:26  profilanswer
 

schnapsmann a écrit :

euh quand la JVM s'arrete, l'OS restitue toute le mémoire de la JVM hein :whistle:


sur un vrai OS oui

n°952335
benou
Posté le 13-01-2005 à 14:09:40  profilanswer
 

Taz a écrit :

le prend pas comme ça. Quand je vois les questions de benou, je me dis que y a des petits trucs à éclaircir. Alors nous on déconne, mais on est pas les seuls à lire ce topic.


 :heink:


---------------
ma vie, mon oeuvre - HomePlayer
n°952343
chrisbk
-
Posté le 13-01-2005 à 14:11:38  profilanswer
 

stfu noob [:nul]

n°952344
the real m​oins moins
Posté le 13-01-2005 à 14:13:07  profilanswer
 

[:rofl]


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°952346
schnapsman​n
Zaford Beeblefect
Posté le 13-01-2005 à 14:14:42  profilanswer
 

[:petrus75]


---------------
From now on, you will speak only when spoken to, and the first and last words out of your filthy sewers will be "Sir!"
mood
Publicité
Posté le   profilanswer
 

 Page :   1  2
Page Suivante

Aller à :
Ajouter une réponse
 

Sujets relatifs
Rendre le code SQL plus lisible avec un outilPetite question sur un code pour Thumbnail
Problème avec un code PHPPortage de code de VC6 vers g++
gcc et code assembleurscript pour code source inaccessible
Code source d'un fichier PHPyatil un nom pour les menus types mappy.fr ?je cherche un code
Intégrer du code HTML dans du XML[Code C] Je recherche le code C pour récupéré le....
Plus de sujets relatifs à : Pour les artistes: quel code préférez vous?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR