IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Entrée/Sortie Java Discussion :

bloquage lors d'un register()


Sujet :

Entrée/Sortie Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2006
    Messages : 48
    Par défaut bloquage lors d'un register()
    Salut à tous,

    Je suis confronté à un problème un peu bizarre, voilà le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    try{
    	socketChannel = SocketChannel.open(new InetSocketAddress(destInet, 2000));
    }
    catch(IOException ioe){
    	...
    }
    try{
    	socketChannel.configureBlocking(false);
    	System.out.println("register");
    	socketChannel.register(selector, SelectionKey.OP_READ);
    	System.out.println("end register");
    }
    catch(ClosedChannelException cce){
    	...
    }
    catch(IOException ioe){
    	...
    }
    Tout fonctionne, sauf que l'opération socketChannel.register() prend environ une minute la plupart du temps (environ 9 fois sur 10, de temps en temps ca passe directement).
    Dans l'api il est mis que cette opération peut bloquer si une invocation de configureBlocking() est en cours, mais dans mon cas le configureBlocking() doit manifestement être terminé (et c'est le seul endroit du code où j'y fait appel).

    Toutes les suggestions sont les bienvenues...

    Merci.

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2006
    Messages : 48
    Par défaut
    Je viens de voir que ce problème semble venir du fait que j'ai un autre thread qui fait un select(100) sur ce selector.
    Le problème est qu'un selectNow() me prend 100% du cpu (il est dans un while(true)), alors qu'un select() semble bloquer l'opération register() indéfiniment

Discussions similaires

  1. Réponses: 2
    Dernier message: 08/08/2010, 16h41
  2. [Postgresql] pb lors d'insertion de données
    Par bob20000 dans le forum Requêtes
    Réponses: 8
    Dernier message: 04/11/2002, 15h33
  3. [VB6] [Install] Que se passe-t-il lors du setup?
    Par petit scarabée dans le forum Installation, Déploiement et Sécurité
    Réponses: 4
    Dernier message: 28/10/2002, 08h26
  4. Réponses: 5
    Dernier message: 06/08/2002, 20h08
  5. Un Sender peut-il s'auto-détruire lors d'un onClick?
    Par Flo. dans le forum C++Builder
    Réponses: 2
    Dernier message: 17/07/2002, 10h31

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo