[debutant] DLL et Threads asynchrone
bonjour,
depuis un programme externe j'appelle une fonction de ma DLL :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
|
void DLL_EXPORT initNI(long aN, long aDuration, long aDelta, long aCode)
{
static DWORD threadID;
static HANDLE hThread;
static paramPort *param;
param = new paramPort;
param->dtPulse = aDelta;
param->nbPulse = aN;
param->pulseDuration = aDuration;
param->value = aCode;
hThread = CreateThread(NULL, 0, sentPulse, param, 0, &threadID);
WaitForSingleObject(hThread, 1);
CloseHandle(hThread);
delete param;
} |
Cette fonction crée un thread qui me permet ensuite d'envoyer un pulse sur une ligne d'une carte NI.
Cette fonction peut-être appelée à tout moment et cela me permet d'envoyer des pulses sur n'importe quelle ligne de ma carte NI de manière asynchrone.
Deux problèmes se posent :
1- ma fonction sentPulse ne reçoit pas toujours les bons paramètres, ils sont parfois "perdus" (c'est pour cette raison que j'ai des variables statiques, mais ça ne change rien) ;
2- je ne peut pas mettre
Code:
WaitForSingleObject(hThread, INFINITE);
sinon mon thread devient bloquant et je ne veux pas car je ne peux pas envoyer d'autres pulses tant que le thread n'est pas fini :?
=> Comment je peux transmettre mes données à ma fonction sans les perdre ?
=> ensuite comment je peux créer de manière asynchrone mes threads et détruire proprement mes thread ?
[edit]
ma structure paramPort est définie comme ceci :
Code:
1 2 3 4 5 6 7 8
|
typedef struct
{
long pulseDuration;
long dtPulse;
long nbPulse;
long value;
}paramPort; |
[/edit]