2010-07-16 5 views
1

J'ai hérité d'un projet composé de trois niveaux de code. La couche la plus basse est le C++ natif qui interagit avec le matériel. C'est mature, stable et bien testé. Le code de niveau intermédiaire est C++/CLI, qui interagit avec le code C# de niveau supérieur qui contient les éléments de l'interface utilisateur et certaines fonctionnalités supplémentaires. Ce code C# est incomplet et a été accéléré en cours de développement: il se bloque fréquemment et n'est pas adapté à son usage. Ma tâche est de le déboguer et de le compléter. J'utilise VS 2008 pour parcourir le code multithread afin de comprendre par où commencer avec ce projet. Question simple: dans la fenêtre Threads, j'ai deux threads nommés: un thread Worker qui communique avec une partie du matériel sous-jacent (c'est-à-dire le code C++) et un thread d'interface utilisateur.Débogage d'une solution C# - C++/CLI - C++ multithread dans Visual Studio 2008: quels sont ces threads?

En parcourant le code, cependant, il y a quelques threads de travail qui n'ont aucun nom et aucune pile d'appels qui leur sont associés, qui semblent être aléatoires. Ils n'ont pas d'entrée dans la barre d'outils Emplacement du débogage et ils n'apparaissent pas visibles dans le code lorsque "Afficher les threads dans la source" est sélectionné.

De quoi s'agit-il, et devrais-je m'inquiéter à leur sujet? Ils ne semblent pas provenir du code natif (car il utilise Boost pour le threading et ceci est clair à partir de la pile des appels). Les geler ou changer leur priorité semble n'avoir aucun effet.

Je n'ai pas débogué le code multi-thread de cette complexité avant donc tout conseil très apprécié!

Répondre

2

En plus des threads de votre application, il y en a quelques autres dans une application .NET. Le moteur d'exécution utilise un thread dédié pour exécuter les finaliseurs. Comme le souligne driis, vous pouvez également voir des threads de pool de threads. Le débogueur démarre également un thread. Si vous utilisez le vshost, vous obtiendrez tout à fait a bit of overhead an additional threads.

Questions connexes