[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 entrée et une
en retour qui sont envoyé vers un service. Si je fait passer des
données DEPUIS la fenêtre du serveur, tout ce passe bien, mais c'est
pas le but du système.
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 même données par un client, le serveur récupè=
re
bien ces données et les envoi à la DLL VC++, mais celle ci me retourne
une erreur. Hors en plaçant 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 réception socket en thread, ça marche,
mais, la réception (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 idée, je suis preneur, ça fait deux jour que je
galère.
Merci d'avance
Vincent
Vidéos High-Tech et Jeu Vidéo
Téléchargements
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