2014-05-24 2 views
2

J'ai essayé d'apprendre le multithreading pour la première fois, mais la plupart des exemples que j'ai vus avaient un fichier d'en-tête thread.h. Ce n'est pas là en Dev C++.Exemple de threads simples pour Dev C++ en utilisant windows.h

J'ai trouvé this article, qui dit que vous pouvez le faire en utilisant windows.h .Sadly il ne fournit aucun exemple de programme. Quelqu'un peut-il s'il vous plaît fournir un exemple de programme qui utilise des fonctions de thread dans windows.h ou tout autre fichier d'en-tête qui est largement utilisé et est présent dans Dev C++? Merci

+1

Je vous suggère de lire à propos _beginthreadex. Windows fournit une API appelée CreateThread mais cela provoque des fuites de mémoire, en raison des problèmes avec le CRT, de sorte que _beginthreadex est meilleur et plus sûr. – Curg

+0

Avez-vous envisagé d'installer Linux? Il fournit un threading Posix standard conforme [pthreads] (https://computing.llnl.gov/tutorials/pthreads/), et il a un bon compilateur [GCC] (http://gcc.gnu.org/) qui est [C++ 11] (http://en.wikipedia.org/wiki/C++11) conforme dans ses versions récentes 4.8 & 4.9 –

+0

Ou si vous avez cette chaîne d'outils compatible C++ avec la librairie de threads conforme à C++ 11 , assurons * les deux * threads Windows et pthreads et sautez simplement sur ce train à la place. – WhozCraig

Répondre

0

bien windows.h a une fonction appelée CreateThread().
Il est la signature et d'autres informations peut être vue here.

Vous avez besoin d'une fonction de rappel, qui commence à s'exécuter lorsque vous démarrez le thread. NULL peut être passé au premier argument lpThreadAttributes.

HANDLE WINAPI CreateThread(
    _In_opt_ LPSECURITY_ATTRIBUTES lpThreadAttributes, 
    _In_  SIZE_T dwStackSize, 
    _In_  LPTHREAD_START_ROUTINE lpStartAddress, 
    _In_opt_ LPVOID lpParameter, 
    _In_  DWORD dwCreationFlags, 
    _Out_opt_ LPDWORD lpThreadId 
); 
+0

Notons que grâce à l'utilisation directe du niveau API CreateThread, la bibliothèque d'exécution n'a pas été informée du nouveau thread, et la bibliothèque d'exécution de Microsoft ne détecte apparemment pas le thread. En tout cas, il insiste pour être informé en utilisant ses propres fonctions de création de threads. Cela peut avoir un impact sur les fonctions qui dépendent de l'état commun, comme l'allocation de tas, 'strtok', date/heure, erreur, etc –

+0

Eh bien, la question est sur les capacités de thread dans windows.h alors ne tirez pas sur le messager. – Andro

1
Best option is to do threading in c or c++ use pthread.h header file 

example work on gcc or dev c++ 

#include <stdio.h> 
#include <stdlib.h> 
#include<pthread.h> 

int i=0; 
void* fun() 
{ 
    for(i=0;i<100;i++) 
    printf("\nThe thread 1 is running"); 
} 
void* van() 
{ 
    for(i=0;i<100;i++) 
    printf("\nthread 2 is running "); 
} 

int main() 
{ 
    pthread_t t1,t2; 
    pthread_create(&t1,NULL,fun,NULL); 
    pthread_create(&t2,NULL,van,NULL); 
    printf("\nI'm in main\n"); 
    pthread_join(t2,NULL); 
    return 0; 
} 
+0

Je n'ai pas l'en-tête pthread.h.Où puis-je l'obtenir? – user3671475