[WD16] Problèmes Thread et API

Le
VincentBarre
Bonjour,
J'ai un souci avec les Thread et les API.
Je m'explique car c'est un peu compliqu :
J'ai fait une application serveur qui fait appel une DLL que j'ai
crite en Visual C++, je lui passe deux chaines, une en entre et une
en retour qui sont envoy vers un service. Si je fait passer des
donnes DEPUIS la fentre du serveur, tout ce passe bien, mais c'est
pas le but du systme.
Dans ce serveur, j'ai crit des fonctions de transfert pas socket (pas
celle de Windev qui sont trop lente), mais je passe par la DLL
wsock32.dll, ces fonction sont dans des thread et c'est l que a
marche plus.
Si je fait passer ces mme donnes par un client, le serveur rcup=
re
bien ces donnes et les envoi la DLL VC++, mais celle ci me retourne
une erreur. Hors en plaant des traces/log partout (Serveur et DLL VC+
+), les valeurs des chaines sont bonnes. J'ai essay de mettre les
variables pass la DLL VC++ en global, c'est pareil :-(
Par contre, si je ne met pas la rception socket en thread, a marche,
mais, la rception (accept,recv de wsock32.dll) est bloquante et donc
bloque le programme pour d'autres taches.
Bon je ne sais pas si je me suis bien fait comprendre, mais si
quelqu'un une ide, je suis preneur, a fait deux jour que je
galre.
Merci d'avance
Vincent
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
VincentBarre
Le #23912401
Bon, je me répond à moi même.
En fait, c'est une histoire d'appel de la même DLL dans des thread
différents, je n'ai pas pu mettre ma DLL en mode single-thread
(safemode), donc je suis obligé de l'initialiser et l'appeler dans le
même thread. Je vais donc faire l'inverse, mettre la gestion de la
fenêtre dans un thread...
@+
Vincent
Eric LAURENT
Le #23912551
Bonjour Vincent,

Vérifie que la fonction ThreadMode(threadSectionCritique) soit bien
dans le code d'ouverture du projet.


Eric.
patrice
Le #23915731
Le 28/10/2011 11:38, VincentBarre a écrit :
Bon, je me répond à moi même.
En fait, c'est une histoire d'appel de la même DLL dans des thread
différents, je n'ai pas pu mettre ma DLL en mode single-thread
(safemode), donc je suis obligé de l'initialiser et l'appeler dans le
même thread. Je vais donc faire l'inverse, mettre la gestion de la
fenêtre dans un thread...
@+
Vincent



c'est quoi ton histoire de single thread ?
je fait des dll en c++ et j'ai aucun soucis avec les threads.
Il faut juste ne pas utiliser de globale mais une structure par thread
que tu déclare dans la fonction principale du thread.
Et coté windev, comme dit précédemment, ne pas utiliser la gestion auto
des sections critiques

Si tu commence à mettre des affichages dans des thread en windev, ca va
se compliquer franchement.

si tu t'en sors toujours pas avec les thread, utilise la fonction
select() pour les sockets
Comme ca tu les passes en non bloquant, et le select() te permet de
savoir où tu en es.
Publicité
Poster une réponse
Anonyme