A voir également:
- Fonction qui s'autoexécute en C ou C++
- Fonction write c ✓ - Forum C
- Fonction si et - Guide
- Fonction puissance en c ✓ - Forum C
- Fonction max en c - Forum C
- Fonction si avec date ✓ - Forum Excel
8 réponses
Le systheme de la boucle est une bonne idée, il faut juste te renseigner sur comment faire pour laisser la main a l'os un temps donné dans chaque tour de boucle.
Les threads et leur systheme de priorité pourraient je crois t'aider a résoudre ce probleme mais on peux faire sans.
Les threads et leur systheme de priorité pourraient je crois t'aider a résoudre ce probleme mais on peux faire sans.
tafiscobar
Messages postés
1277
Date d'inscription
jeudi 7 décembre 2000
Statut
Contributeur
Dernière intervention
26 février 2009
177
26 juin 2002 à 09:23
26 juin 2002 à 09:23
bon je ne suis pas un pro en C/C++ encore moins en prog win, mais j'ai une idée : voila, il doit bien y avoir une fct ds les sockets quelque chose qui te permette d'etre a l'ecoute des ports(je pense q c'est ce q utilise les firewalls), la tu fais une fct qui renvoie un boolleen et qui ecoute un port(true ==quelque chose, false ==rien).Et cette fct tu devrais pouvoir le faire ds un thread et l'executer comme une sorte de processus et la, t'imobilises pas win, a moins q le processus soit trop quemandeur en memoire.Ensuite un autre processus et qui est a l'ecoute de l'autre thread( si cela est possible) et a chaq fois qu'il renvoie un true, t'executes ta fct que tu v executer.
j'ai pense au systeme des temporisateurs, mais pas bien, des données pourraient te passer a l'oeil sans q tu les vois.
tafiscobar
j'ai pense au systeme des temporisateurs, mais pas bien, des données pourraient te passer a l'oeil sans q tu les vois.
tafiscobar
Merci, si j'ai bien compris je n'ai pas pris une voie si idiote que ça pour l'instant, mais maintenant, il faut que j'ajoute un "thread". Bon bah je n'ai plus qu'à potasser.
Est-ce que vous connaissez un bon tutorial ou une aide sur les threads ?
Merci,
NoNo
Est-ce que vous connaissez un bon tutorial ou une aide sur les threads ?
Merci,
NoNo
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Il y a deux approches, avec ou sans thread, les deux marchent tres bien si elles sont correctement programmées.
Dans ta boucle tu rend la main a l'os pour qu'il s'occupe de l'affichage et de tout ce qui ne concerne pas ton programme et c gagné.
Il me semble que DoEvents existe dans l'api et puis
sous windows on a la notion d'evenements, si tu utilise un composant activeX pour les sockets, il lance automatiquement une fonction a chaque reception de donnée..bon, je suppose que tu ne dois pas utiliser de composant.
Dans ta boucle tu rend la main a l'os pour qu'il s'occupe de l'affichage et de tout ce qui ne concerne pas ton programme et c gagné.
Il me semble que DoEvents existe dans l'api et puis
sous windows on a la notion d'evenements, si tu utilise un composant activeX pour les sockets, il lance automatiquement une fonction a chaque reception de donnée..bon, je suppose que tu ne dois pas utiliser de composant.
Pour les sockets il existe sous windows un mecanisme ce sont mes sockets event.
Tu initialise ton event avec :
m_hEventObject = WSACreateEvent();
puis :
iResult = WSAEventSelect(recvSocket, m_hEventObject, FD_READ);
puis ds une thread tu fais :
DWORD dw = WSAWaitForMultipleEvents(MAXSOCK,pSock->m_hEventObject,FALSE,WSA_INFINITE, ! ALERTABLE);
il te faudra pour cela utiliser winsock2
WSAEventSelect(
Tu mets ds une thread un
Tu initialise ton event avec :
m_hEventObject = WSACreateEvent();
puis :
iResult = WSAEventSelect(recvSocket, m_hEventObject, FD_READ);
puis ds une thread tu fais :
DWORD dw = WSAWaitForMultipleEvents(MAXSOCK,pSock->m_hEventObject,FALSE,WSA_INFINITE, ! ALERTABLE);
il te faudra pour cela utiliser winsock2
WSAEventSelect(
Tu mets ds une thread un
gg2000
Messages postés
16
Date d'inscription
jeudi 6 juin 2002
Statut
Membre
Dernière intervention
5 juillet 2002
27 juin 2002 à 19:24
27 juin 2002 à 19:24
un tread est un bout de programme qui tourne tous seul.
Pour ce fiare il existe la fonction afxbeginthread(nom du thread) qui permet de lancer ta fonction. Puis pour l'arreter tu utilises la fonction endthread(nom de ta fonction).
Maintenant pour définir que une fonction thread tu dois définier ta fonction comme thred c'st à dire tu dois mettre devant ta fonction thread exemple (0 étant la priorité de ton thread)
UINT thread(LPVOID v)
AfxBeginThread(thread,0);
AfxEndThread(0);
Pour ce fiare il existe la fonction afxbeginthread(nom du thread) qui permet de lancer ta fonction. Puis pour l'arreter tu utilises la fonction endthread(nom de ta fonction).
Maintenant pour définir que une fonction thread tu dois définier ta fonction comme thred c'st à dire tu dois mettre devant ta fonction thread exemple (0 étant la priorité de ton thread)
UINT thread(LPVOID v)
AfxBeginThread(thread,0);
AfxEndThread(0);