Cher Journal,
Je programme actuellement une petite application GTK qui se doit d'écouter sur un port TCP. Jusque là aucun problème, seulement voilà, mon interface graphique permet(tra) d'arrêter cette écoute.
Et c'est là le problème : j'ai du rater un épisode, parceque je ne vois aucun moyen d'interrompre le thread (un gthread pour être précis) qui s'occupe d'écouter sur un port (pendant l'appel à accept(), bloquant donc)...
Je suppose pourtant qu'il s'agit d'une situation ultra-classique, mais une intense recherche toute la journée ne m'a pas donné grand-chose d'autre qu'un gros mal de tête.
Faut-il que je me résigne à faire du polling sur un socket non-bloquant ? faut-il que je fasse mon écoute dans un autre process, que du coup je pourrais intérrompre par le biais d'un signal ?
En te remerciant, cher Journal, pour ton indéflectible attention.
# Re: C, GTK, Threads, sockets & rock and roll
Posté par Moby-Dik . Évalué à 4.
[^] # Re: C, GTK, Threads, sockets & rock and roll
Posté par mrlem (site web personnel) . Évalué à 1.
Je n'avais pas très bien compris l'utilité de select(), ce qui fait que j'étais passé à côté.
Allez, hop, suite du programme.
Encore merci (et à Fabien Seisen aussi d'ailleurs).
[^] # Re: C, GTK, Threads, sockets & rock and roll
Posté par mrlem (site web personnel) . Évalué à 1.
Exit donc cette solution pourtant fort élégante :o(
# Re: C, GTK, Threads, sockets & rock and roll
Posté par Fabien Seisen . Évalué à 3.
# Re: C, GTK, Threads, sockets & rock and roll
Posté par gnumdk (site web personnel) . Évalué à 2.
il faut utiliser ca et eviter des faires des threads...
[^] # Re: C, GTK, Threads, sockets & rock and roll
Posté par mrlem (site web personnel) . Évalué à 1.
"Currently full support is available on UNIX platforms, support for Windows is only partially complete."
dans la mesure où l'un des objectifs de mon programme est de fonctionner aussi sur Windows.
Ai-je eu tors ? je n'ai pas trouvé rapidement d'info sur le statut exact pour Windows.
Par contre, pourquoi éviter d'utiliser des threads ? Quelles alternatives existent losque l'on veut préserver la réactivité d'une appli pendant un traitement long ? Les processes ? Il me semble avoir vu que désormais GTK2 est thread-safe, non ?
[^] # Re: C, GTK, Threads, sockets & rock and roll
Posté par mrlem (site web personnel) . Évalué à 2.
# Re: C, GTK, Threads, sockets & rock and roll
Posté par Fabimaru (site web personnel) . Évalué à 1.
[^] # Re: C, GTK, Threads, sockets & rock and roll
Posté par mrlem (site web personnel) . Évalué à 1.
Ca marche ou bien il y a des risques que le programme nous explose à la figure ?
Je crois que je vais en rester à la solution select() sur le socket et un pipe utilisé pour l'interrompre, qui de toute façon me semble plus élégante.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.