Bonjour,
J'aimerai créer des threads dans mon programme sous windows mais je ne sais pas quel librairie il faut et un code d'exemple.
Si quelqu'un pourrait m'aider, ce serait sympa.
Bonjour,
J'aimerai créer des threads dans mon programme sous windows mais je ne sais pas quel librairie il faut et un code d'exemple.
Si quelqu'un pourrait m'aider, ce serait sympa.
google CreateThread
HANDLE CreateThread(
LPSECURITY_ATTRIBUTES lpThreadAttributes,
SIZE_T dwStackSize,
LPTHREAD_START_ROUTINE lpStartAddress,
LPVOID lpParameter,
DWORD dwCreationFlags,
LPDWORD lpThreadId
);
scr: Pas loin, mais raté de peu.
greg1517 :
- Windows-only: Tu peux utilise la fonction _beginthreadex(), déclarée dans <process.h>. N'utilise pas la fonction _beginthread() simple.
- Portable: Tu peux utiliser une bibliothèque appelée pthread-win32, qui comme son nom l'indique permet d'utiliser les fonctions de multithreading POSIX sous Windows.
SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.
"Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
Apparently everyone. -- Raymond Chen.
Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.
Un petit exemple, côdé sur le pouce, sans même essayer de compiler:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64 #include <windows.h> #include <stdlib.h> #include <stdio.h> #include <process.h> /* Procédure du thread: Se contente d'écrire cent chiffres sur la sortie standard. */ unsigned int __stdcall procedureThread(void *pv) { int i; char c = '0'; (void)pv; /* On ignore le paramètre. */ for(i=0 ; i<100 ; i++) { putchar(c); c++; if(c > '9') c = '0'; } return 0; } /* Le main: Cette fonction va lancer le thread, écrire cent lettres minuscules, puis attendre la fin du thread. */ int main(void) { HANDLE hThread = NULL; unsigned int idThread; puts("Bonjour"); hThread = (HANDLE)_beginthreadex(NULL, 0, procedureThread, NULL, 0, &idThread); if(hThread==NULL) { puts("Echec de lancement du thread"); return EXIT_FAILURE; } else { printf("Thread lance, son id est %u.\n", idthread); } /* Affiche cent lettres minuscules (ne marche pas en EBCDIC)*/ { int i; char c = 'a'; for(i=0 ; i<100 ; i++) { putchar(c); c++; if(c > 'z') c = 'a'; } } /* Attend la fin du thread */ WaitForSingleObject(hThread, INFINITE); /* On n'a plus besoin du handle du thread à présent. */ CloseHandle(hThread); return 0; }
SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.
"Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
Apparently everyone. -- Raymond Chen.
Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.
C'est expliqué dans la page d'aide: _beginthread() ne gère pas toujours correctement les threads, surtout ceux qui peuvent se terminer vite.
_beginthreadex() prend moins de risques, et est plus proche de la fonction de l'API Windows.
SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.
"Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
Apparently everyone. -- Raymond Chen.
Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.
Ok désolé et mille merci pour les réponses et la question
Bonjour,
Je relance mon sujet car maintenant, j'en ai vraiment besoin.
J'ai fait quelques recherches sur une librairie rapide (consommation faible du CPU) mais aussi portable. (pas d'API donc par pitié)
Justement, j'avais trouvé pthreads.
Est-il simple d'utilisation et très rapide (optimisation)?
Merci Emmanuel Delahaye.
pthreads est relativement aisé à utiliser et très portable. Voici un didacticiel qui devrait t'aider à prendre en main cette bibliothèque: http://franckh.developpez.com/tutoriels/posix/pthreads/
Bonne chance
Thierry
"The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
"If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow
FAQ-Python FAQ-C FAQ-C++
+
Partager