C: Exécuter deux fonctions en même temps?
J'ai deux fonctions en C:
void function1(){
//do something
}
void function2(){
//do something while doing that
}
Comment aurais-je de l'exécution de ces deux fonctions en même temps exact?
Si possible, veuillez fournir un exemple!
Utiliser le fork()!
Si les threads vont vraiment s'exécuter en même temps dépend de la configuration matérielle (est-ce que votre matériel a plusieurs indépendante de l'exécution des carottes) et l'OS (l'OS annexe les deux fils en même temps).
"en même temps" signifie normalement "apparemment à la même temps"; en ce moment, je suis en train d'écrire ce commentaire, "tandis que" wget est de télécharger quelque chose", alors que"... ps les listes de 50 ou alors, de l'exécution de "choses"... apparemment, tous les dans le "même temps"; si certains peuvent aller parallèle pour de vrai ou pas, ça dépend... néanmoins, presque tous ceux qui peuvent être "en parallèle dans le matériel", néanmoins nous pensons toujours à propos de multitâche comme des choses exécuté en "même temps",du point de vue des utilisateurs, même si nous l'exécuter sur un seul singlecore cpu. Je crois que l'Opéra de prévu ce qui est possible avec une fourchette et fils
Si les threads vont vraiment s'exécuter en même temps dépend de la configuration matérielle (est-ce que votre matériel a plusieurs indépendante de l'exécution des carottes) et l'OS (l'OS annexe les deux fils en même temps).
"en même temps" signifie normalement "apparemment à la même temps"; en ce moment, je suis en train d'écrire ce commentaire, "tandis que" wget est de télécharger quelque chose", alors que"... ps les listes de 50 ou alors, de l'exécution de "choses"... apparemment, tous les dans le "même temps"; si certains peuvent aller parallèle pour de vrai ou pas, ça dépend... néanmoins, presque tous ceux qui peuvent être "en parallèle dans le matériel", néanmoins nous pensons toujours à propos de multitâche comme des choses exécuté en "même temps",du point de vue des utilisateurs, même si nous l'exécuter sur un seul singlecore cpu. Je crois que l'Opéra de prévu ce qui est possible avec une fourchette et fils
OriginalL'auteur Daniel | 2010-06-16
Vous devez vous connecter pour publier un commentaire.
Vous utilisez des threads.
Par exemple, pthreads est une bibliothèque c pour le multithreading.
Vous pouvez regarder ce pthreads tutoriel pour plus de détails.
Voici un exemple de programme de frai pthreads de ce tutoriel.
Sauf que (comme vous le savez probablement) "exact même temps" n'est pas possible techniquement. Si vous êtes en cours d'exécution sur un seul ou plusieurs éléments essentiels de la procédure, vous êtes à la merci du système d'exploitation est un planificateur de tâches pour exécuter votre fils. Il n'y a aucune garantie qu'ils vont exécuter "en même temps", au lieu de cela, ils peuvent partager un seul cœur. Vous pouvez commencer à les deux fils et les exécuter simultanément, mais qui peut ne pas être exactement ce que vous êtes après...
Si vous êtes sur linux, oui, je ne sais pas à propos de beaucoup de choses. Google a quelques hits pour le téléchargement.
Vous pouvez déjà avoir pthreads disponibles, il serait utile si vous avez déclaré l'OS et de l'environnement de programmation que vous utilisez.
C'est un linux standard de la bibliothèque, bien qu'il y est un semi-complète win32 port. Croix-plate-forme de filetage est très ennuyeux en C, mais le Boost a un Thread de la bibliothèque C++
Désolé de ne pas dire cela, je suis en utilisant mac os x 10.6
OriginalL'auteur Stephen
Il n'est pas possible de le faire dans un façon standard. Vous aurez besoin de s'appuyer sur un tiers de la méthode. À savoir, pthreads ou Win32 fils.
POSIX exemple:
Win32 exemple:
Il y a des Fenêtres ports de POSIX si vous souhaitez l'utiliser sur les deux plates-formes.
OriginalL'auteur GManNickG
Pour une approximation 'en même temps', vous pouvez exécuter chaque fonction dans son propre thread (voir https://computing.llnl.gov/tutorials/pthreads/ pour plus d'info)
Si vous avez besoin pour assurer ces deux fonctions effectuent des opérations dans une sorte de mode synchronisée, vous voulez savoir à propos de primitives de synchronisation tels que les mutex, sémaphores et les moniteurs.
OriginalL'auteur James