Autor | Beitrag |
---|
000 25.05.2009, 11:20 LeJean |
Morgen, ich hab ein etwas spezielleres Problem - aber vielleicht hab ich ja Glück und es gibt hier Leute, die sich schonmal mit der ACE-Library (C/C++) auseinandersetzen durften. Ich habe eine Klasse, die von ACE_Task_Base erbt und durch Aufruf von activate() einen eigenen Thread startet und die überschriebene Methode svc() aufruft. So weit so gut, das funktioniert. Jetzt hat ACE_Task einen ACE_Thread_Manager dabei, der ja zusätzlich Threads spawnen kann - diese Möglichkeit möchte ich gerne nutzen. Zuerst mal der relevante Quellcode (gekürzt, Namen geändert da vertraulich) Ich arbeite hier mit Visual Studio 2008 Professional und habe natürlich auch die ganze ACE-Library entsprechend damit und dafür kompiliert. Jemand ne Idee? -- |
Profil || Suche |
001 25.05.2009, 13:27 J_Hannes |
ich hab zwar keine Ahnung was ACE is aber es kann sein das es da probleme giebt weil es sich um eine Methode und nicht um eine Funktion handelt. versuch mal die sub_thread methode als globale Funktion zu deklarieren und die Objectinstance mitzugeben (so mach ich das immer wenn ich was mit threads mache) --Heut' debug ich morgen brows' ich übermorgen cast' ich die Königin auf int |
Profil || Suche |
002 25.05.2009, 13:40 theDon |
Wie ist denn ACE_THR_FUNC definiert? --\o tanz den naziprau! o/ And more than ever, I hope to never fall, |
Profil || Suche |
003 25.05.2009, 13:55 LeJean |
ACE_THR_FUNC ist mit ACE_THR_FUNC_INTERNAL weiter beschrieben, und dazu finde ich in den mir zugänglichen Sachen leider keine Informationen. Bzw. es ist eigentlich ein Funktionspointer: Danke schonmal! Editiert: Der Quelltext aus meinem Eröffnungspost hatte eh noch ein paar Macken, der hat sich inzwischen etwas geändert. Ich werd bei nächster Gelegenheit mal den aktuellen Ausschnitt posten. --Dieser Beitrag wurde am 25.05.2009 um 13:57 von LeJean bearbeitet. |
Profil || Suche |
004 25.05.2009, 15:07 theDon |
http://www.parashift.com/c++-faq-lite/pointers-to-members.html#faq-33.2 --\o tanz den naziprau! o/ And more than ever, I hope to never fall, |
Profil || Suche |
005 25.05.2009, 18:07 LeJean |
Ha.. also mir ist durchaus klar, dass ich Memberfunktionen nicht einfach so aufrufen kann. Ich würde auch nicht auf die Idee kommen, diese Funktion ohne eine zugehörige Instanz aufrufen zu wollen.
Da ich das Ganze aber wohl etwas exzessiver betreiben muss, werde ich die Architektur entsprechend umstellen und auf noch mehr verschiedene Klassen zurückgreifen, die interagieren und deren Objekte jeweils eigene LWPs bekommen. Vielen Dank trotz allem für die Mühen ;) -- |
Profil || Suche |
006 29.07.2009, 10:51 LeJean |
Moin nochmal! Ich hab die ganze Sache jetzt generell so umgesetzt, dass alles, was ein Thread sein soll auch eine eigene Klasse hat. Hat sicher einige Vorteile und gehört sich vielleicht auch so... aber darum soll's jetzt erstmal nicht mehr gehen. Meine aktuelle Problematik: Führe ich die Applikation jetzt auf einem anderen PC aus, startet die Anwendung zwar ohne Fehlermeldung, jedoch werden die Threads nicht gespawned. Ausgaben, die ausserhalb von Threads gemacht werden, werden angezeigt. Alles was irgendwie in Threads läuft findet schlichtweg nicht statt. Bei der ganzen Sache ist es egal, ob auf dem Rechner, auf dem die Anwendung ausgeführt werden soll, ACE komplett vorliegt (also auch dort kompiliert wurde) oder nicht. Selbst wenn ich mein Projekt (bzw. die ganze Solution) in einer VS Instanz auf einem anderen Rechner lade, die Pfade in den Projekteinstellungen anpasse und die Applikation starten möchte, werden Threads nicht gestartet. Hat jemand von euch damit schonmal Probleme gehabt und vielleicht eine Lösung oder einen Ansatz parat? So langsam weiß ich nicht mehr, was ich sonst noch machen sollte. http://msdn.microsoft.com/de-de/library/8kche8ah.aspx Diese Quellen haben mir leider nicht weiter geholfen. Editiert: Editiert zum zweiten: MfG, Dieser Beitrag wurde am 29.07.2009 um 11:13 von LeJean bearbeitet. |
Profil || Suche |