Je cherche à trouver comment mettre en œuvre ce scénario: J'ai le code logique qui est à l'intérieur fonction, maintenant j'aime être en mesure d'exécuter cette fonction dans un thread séparé. maintenant ce que j'ai est une implémentation brute de cela .. I simple Init le Thread que dans sa méthode Start/Run je garde la logique de la fonction. comment puis-je le rendre plus générique? donc je pourrais envoyer la fonction (peut-être le pointeur de fonction) à l'usine générique de fil/piscine? en C++C++: détournant les yeux pour mettre en œuvre ce scénario
Répondre
Ceci est le schéma de commande. La solution habituelle consiste à regrouper la logique dans un objet de fonction:
class DoSomething {
public:
// Constructor accepts and stores parameters to be used
// by the code itself.
DoSomething(int i, std::string s)
: i_(i), s_(s) { }
void operator()() {
// Do the work here, using i_ and s_
}
private:
int i_;
std::string s_;
};
Jetez un oeil à boost :: fil et boost :: bind car ceux-ci deviendra le std :: tr1 :: fil et std :: tr1 ::lier.
boost :: thread est un petit objet, recevant un pointeur foncteur sans valeur de retour et aucun argument. Cela signifie soit un pointeur vers une fonction déclarée void (*function)(void);
, soit une structure/classe implémentant void operator()()
.
Si vous utilisez également boost :: bind, vous pouvez adapter fondamentalement tout foncteur d'être appelé comme void (*functor)(void)
.
C'est aussi flexible que possible (car vous pouvez transformer n'importe quel objet fonctionnel ou de type fonction à appeler sans paramètre, puis le lancer dans son propre thread).
- 1. Comment mettre en œuvre les paquets SIP en C#
- 2. mettre en œuvre BigPipe pour .NET pour améliorer les performances
- 3. Comment mettre en œuvre les changements web.config
- 4. ASP.Net: Comment mettre en œuvre correctement ce flux d'authentification
- 5. Comment mettre en œuvre une minuterie avec interruption en C++?
- 6. Comment mettre en œuvre tri à bulles en C.
- 7. Utilisation de Bridge pour ce scénario?
- 8. C#: Comment mettre en œuvre IOrderedEnumerable <T>
- 9. Comment mettre en œuvre correctement les codes de triche?
- 10. Comment mettre en œuvre en commandant silverlight
- 11. C# ne générique * pas * mettre en œuvre quelque chose
- 12. Meilleur trois niveaux C# Mettre en œuvre "style"
- 13. C++: Comment mettre en œuvre (quelque chose comme) JSON
- 14. mettre en œuvre un C++ opérateur incrément postfix
- 15. Comment appliquer MVVM pour ce scénario
- 16. Mettre en œuvre Retour actions en UITabBarController
- 17. Scénario de fin en C#
- 18. Mettre en œuvre dans un réseau Caching
- 19. Qu'est-ce que le Mutex et le sémaphore In C#? où nous devons mettre en œuvre?
- 20. mettre en œuvre webservice RESTFUL avec php
- 21. Comment mettre en œuvre Log4net pour ma Asp.net demande mvc
- 22. Drupal: module pour mettre en œuvre le système de crédit
- 23. Comment mettre en œuvre l10n Android?
- 24. Comment mettre en œuvre "articles connexes?"
- 25. mettre en œuvre webcache comme application Web
- 26. comment mettre en œuvre la MTurk sur les rails l'application
- 27. Mettre en œuvre l'avenir dans CLDC 1.1
- 28. Meilleure façon de mettre en œuvre ce schéma de connexion dynamique pour asp.net
- 29. Comment mettre en œuvre l'animation entre les pages
- 30. Comment mettre en œuvre like-HtmlHelper
Vous pourriez vouloir décomposer ceci en phrases et paragraphes. C'est illisible. – sbi
Seriez-vous assez aimable pour ajouter quelques sauts de ligne à votre question? Je trouve très difficile à lire/comprendre – sum1stolemyname
bien que j'essaie de .. mais sans serrure .. quel est le truc ici? – user63898