Je veux créer un thread en C afin que le fil appelle automatiquement après deux secondes. J'utilise Visual Studio et Windows Platform pour le développement. P>
Comment puis-je commencer? P>
7 Réponses :
Il n'y a rien dans la norme C qui pourrait vous aider. Vous devez utiliser certaines fonctionnalités de la bibliothèque ou de la plate-forme. N'oubliez pas que de nombreuses plates-formes n'ont tout simplement pas de threads - seuls des processus de poids complets. P>
sur Windows utilise Createthread () . Vous aurez besoin de Microsoft SDK pour compiler votre code à l'aide de cela et d'autres fonctions Win32. P>
Veuillez me dire des bibliothèques qui peuvent rendre cela possible.
Je vous suggère de spécifier d'abord les exigences de la plate-forme cible - je pourrais indiquer une bibliothèque qui ne convient pas à la plate-forme de votre intérêt.
Veuillez nous dire votre plate-forme, Arman ... sur UNIX, vous utiliseriez normalement la bibliothèque Posix Pthread; Sous Windows, vous utilisez l'API Windows Native Windows.
C n'a pas construit dans des installations de filetage; Vous devrez utiliser vos services OS pour créer un fil. P>
pour Windows utilise Fonction Createthread . p>
Vous aurez besoin d'utiliser des bibliothèques spécifiques au système d'exploitation pour fileter. Sur POSIX, vous voudrez regarder dans pthreads (et spécifiquement
La nouvelle norme C, C11 inclut Support multi-threading
Multithreading in C est la plate-forme dépendante. Vous devez utiliser des bibliothèques externes correspondant à différentes plates-formes. P>
LIRE À propos de: P>
multithreading in c, style POSIX et Multhreading avec C et Win32 P>
Vous pouvez vérifier ce lien de différentes façons de le faire: Windows threading: _Beginthread vs _breginthreadex vs créethread C ++ P >
Pour le code multiplate-forme, vous pouvez également consulter le Boost Bibliothèque ou Blocs de construction Intel Filetage . p>
Veuillez vous référer à MSDN pour VC8. Reportez-vous à la Createthread () Aide là-bas. Cela devrait vous donner des informations suffisantes. P>
Pour vérifier en ligne, veuillez consulter le lien ci-dessous: P>
http://msdn.microsoft.com/ EN-US / Bibliothèque / MS682453 (vs.85) .aspx P>
Voici un exemple de programme pour une filetage unique et multithreading dans Win32api écrit en C travaillera sur Visual Studio.
singlethread.c strong> p> #include<stdio.h>
#include<stdlib.h>
#include<Windows.h>
#define NUM_THREADS 2 // Define Number of threads here or take as user Input,
// In yourquestion it is 2
DWORD WINAPI funHello(void *x)
{
int c = (int*)x;
printf("\n Thread No: %d\n",c);
Sleep(2000);
return 0;
}
int main()
{
HANDLE *arrayThread;
arrayThread = (int*)malloc(NUM_THREADS * sizeof(int));
DWORD ThreadId;
for (int i = 0; i < NUM_THREADS; i++)
{
arrayThread[i] = CreateThread(NULL, 0, funHello, (void *)i, 0, &ThreadId);
if (arrayThread[i] == NULL)
{
printf("Create Thread %d get failed. Error no: %d", i, GetLastError);
}
}
WaitForMultipleObjects(NUM_THREADS, arrayThread,TRUE,INFINITE);
DWORD lpExitCode;
BOOL result;
for (int i = 0; i < NUM_THREADS; i++)
{
CloseHandle(arrayThread[i]);
}
printf("\n Hello Main..");
return 0;
}
Quelle plate-forme? Et que voulez-vous dire, "Appelez automatiquement"? Si le fil appelle automatiquement une fonction après un délai de deux secondes? Avez-vous besoin que cela soit un fil séparé ou une minuterie dans le même thread sera-t-elle suffisante? Essayez d'être un peu plus précis dans votre question.
J'utilise la plate-forme Visual Studio 2008 et Window pour le développement. Et appelez automatiquement signifie que je veux appeler récursivement le thread après toutes les 2 secondes, comme la fonction NSTIMER dans l'objectif c.