2016-05-05 10 views
0

Wir haben eine native .dll, die einige HPC-Typberechnungen mit Threading Building Blocks 4.4 durchführt, um die Parallelität zu verwalten. Diese .dll wird von einem .NET-Desktop-Programm aufgerufen, das selbst Multi-Threading ist. Ich bin Neuling bei tbb, und ich fragte mich, ob diese Art von Einrichtung einige Probleme aufwarf. Meine Verwendung von tbb ist ziemlich einfach - ich rufe nur parallel_reduce an, um eine bestimmte Berechnung durchzuführen. Ich richte den tbb threapool nicht explizit ein; Ich verlasse mich auf die Standard-Initialisierung dafür.Probleme mit tbb in nativer DLL aus Multi-Threaded .net-Anwendung aufgerufen?

Wenn wir Systemtests machen, sehen wir einige intermittierende Prozesse hängen. Wir sehen diese nicht, wenn wir die native DLL isoliert testen, also erwarte ich ein minimales Beispiel, das zeigt, dass das Problem schwer zu konstruieren ist. Ich hoffe, dass jemand mit dem tbb vertrauter ist, als ich vielleicht vorschlagen könnte, wenn es in diesem Anwendungsszenario wahrscheinlich ein intrinsisches Problem gibt.

Alles läuft unter Windows 10 auf x86-64-Plattform übrigens.

+0

Wie beobachten Sie "intermittierenden Prozess hängt". Wird die GUI mit Verzögerungen aktualisiert? Reagiert das ganze System nicht? Kann es nicht durch hohe CPU-Auslastung und Überbelegung verursacht werden? – Alex

+0

@Alex - Zwei Verhaltensweisen: 1, GUI reagiert nicht mehr ohne CPU-Aktivität. 2, GUI heruntergefahren, als ob es abgestürzt ist, aber es gibt keine "Diese Anwendung hat einen Fehler gefunden" -Dialog. – antlersoft

+0

Konnte Speicherfehler in systemeigenem Code (z. B. wegen inkorrektem Marshalling oder etwas anderes) nicht zu einem instabilen Verhalten der verwalteten Laufzeit führen? Hast du versucht, parallel_reduce mit einem leeren Body auszuführen? – Alex

Antwort

0

Die Antwort auf meine Frage scheint zu sein, dass es kein Problem gibt; Threading Building Blocks können in diesem Szenario gut funktionieren. Durch die Beseitigung von parallel_reduce wurde das Verhalten nicht geändert. Weitere Untersuchungen zeigen, dass das Problem auf den verwalteten Code beschränkt war. hatte überhaupt nichts mit TBB zu tun.