J'ai utilisé fork() en C pour démarrer un autre processus. Comment puis-je démarrer un nouveau thread ?
Voici un exemple d'utilisation : timmurphy.org/2010/05/04/…
J'ai utilisé fork() en C pour démarrer un autre processus. Comment puis-je démarrer un nouveau thread ?
Puisque vous avez mentionné fork(), je suppose que vous êtes sur un système de type Unix, auquel cas Les threads POSIX (généralement appelés pthreads) sont ceux que vous voulez utiliser.
Plus précisément, pthread_create() est la fonction dont vous avez besoin pour créer un nouveau thread. Ses arguments sont :
int pthread_create(pthread_t * thread, pthread_attr_t * attr, void *
(*start_routine)(void *), void * arg);
Le premier argument est le pointeur renvoyé vers l'identifiant du thread. Le deuxième argument est l'argument du thread, qui peut être NULL sauf si vous voulez démarrer le thread avec une priorité spécifique. Le troisième argument est la fonction exécutée par le thread. Le quatrième argument est l'unique argument passé à la fonction du thread lorsqu'elle est exécutée.
Les threads POSIX ne sont-ils pas considérés comme du "plain C" maintenant que la norme C11 les définit ?
A ma connaissance, le C ANSI ne définit pas le threading, mais il existe plusieurs bibliothèques disponibles.
Si vous travaillez sous Windows, établissez un lien avec msvcrt et utilisez _beginthread ou _beginthreadex.
Si vous travaillez sur d'autres plateformes, consultez la bibliothèque pthreads (je suis sûr qu'il en existe d'autres).
Consultez le pthread (POSIX thread).
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.
0 votes
Cela dépend de la plate-forme. Voici comment procéder sous Windows : http://msdn.microsoft.com/en-us/library/ms682453.aspx
0 votes
Comme l'explique la documentation de CreateThread à laquelle vous avez accédé, si le programme utilise la bibliothèque d'exécution C, il faut utiliser _beginthreadex et non CreateThread.
0 votes
Merci, je ne l'avais pas remarqué. Comment savez-vous si vous utilisez le CRT ? Je pensais que tout le monde l'utilisait.
0 votes
Vous pouvez demander au compilateur de ne pas inclure les bibliothèques par défaut. Vous ne pourrez alors pas utiliser le CRT par accident et vous pourrez utiliser entièrement les fonctions Win32.