Funkton in einen Prozess auslagern
Funkton in einen Prozess auslagern
hallo,
mich würde mal interessieren ob es in Qt auch möglich ist, eine Funktion in einen externen prozess auszulagern?
geht das ?
gruß anno
mich würde mal interessieren ob es in Qt auch möglich ist, eine Funktion in einen externen prozess auszulagern?
geht das ?
gruß anno
Prozess != Thread!!! Lies dir zu den beiden Stichpunkten mal die Wikipedia durch.anno1988 hat geschrieben:na ich meine eigentlich nicht externe programm in diesem sinn, dass ich eine datei aufrufe, sondern eine selbs geschriebene funktion als prozess auslagere.
Wenn du UNBEDINGT eine eigene Funktion in einen anderen Prozess auslagern willst, musst du deine Funktion samt Parameterübergabe in ein eigenes Executable packen.
ja ich weiß was ein prozess und thread ist.
da kenne ich den unterschied. und meine frage habe ich schon richtig formuliert. Ich meine damit einen Sohnprozess
ich rede da von so etwas
http://www.yolinux.com/TUTORIALS/ForkExecProcesses.html
allerdings halt in qt.
da kenne ich den unterschied. und meine frage habe ich schon richtig formuliert. Ich meine damit einen Sohnprozess
ich rede da von so etwas
http://www.yolinux.com/TUTORIALS/ForkExecProcesses.html
allerdings halt in qt.
-
Christian81
- Beiträge: 7319
- Registriert: 26. August 2004 14:11
- Wohnort: Bremen
- Kontaktdaten:
Dass du einen Sohnprozess haben willst, hast du bisher nicht gesagt, nur dass du eine Funktionen in einen neuen Prozess asulagern willst, was schon was anderes ist!anno1988 hat geschrieben:ja ich weiß was ein prozess und thread ist.
da kenne ich den unterschied. und meine frage habe ich schon richtig formuliert. Ich meine damit einen Sohnprozess
ich rede da von so etwas
http://www.yolinux.com/TUTORIALS/ForkExecProcesses.html
allerdings halt in qt.
Der Sinn in Verbindung mit Gui-Programmierung entzieht sich mir vollkommen. Dafür gibt es auch keine eigene Klasse in Qt. Wehalb denn auch, ist ja nur die eine Funktion fork().
Weshalb muss es denn unbedingt ein frok() sein? Lässt sich das absolut nicht besser regeln? Kannst ja mal kurz erklären, was du vor hast.
Das Stichwort dürfte eher QtConcurrent sein. Gibt es aber erst seit Qt4.4
naja also das stimmt eigentlich schon, dass ich eine funktion in diesem fork in einen externen prozess auslagern will.
da man mit qt auch konsolenanwendugne schreiben kann wollte ich das einfach mal wissen ob das funktioniert oder nicht.
innerhalb von diesem fork kann ich da alles mögliche machen, auch z.b. eine funktion als eigenständiger prozess laufen lassen.
denn es ist dann halt wieder umständlich das für verschiedene systeme immer extra zu programmieren.
wenn es in qt schon geben würde wäre das ja super.
aber so wie ich die Reaktion verstehe gibts das also nicht.
da man mit qt auch konsolenanwendugne schreiben kann wollte ich das einfach mal wissen ob das funktioniert oder nicht.
innerhalb von diesem fork kann ich da alles mögliche machen, auch z.b. eine funktion als eigenständiger prozess laufen lassen.
denn es ist dann halt wieder umständlich das für verschiedene systeme immer extra zu programmieren.
wenn es in qt schon geben würde wäre das ja super.
aber so wie ich die Reaktion verstehe gibts das also nicht.
Naja, prinzipiell funktionieren tut es ja schon. Und du kannst es auch machen, wenn du meinst dass es Sinn macht. Ich denke das tut es nicht.
Dein fork() kopiert den GANZEN Speicherbereich deines Prozesses in einen neuen Bereich. Das alleine kann schon ganz schön dauern. Ein neuer Thread tut in deinem Falle genau das gleiche. Oder willst du wirklich für den neuen Kind-Prozess die komplette Prozessumgebung haben? Bezweifle ich.
In deinem Fall leite einfach von QThread ab, schreib dir setter/getter, für alle Daten die du brauchst, implementier run(), und gut ist.
Dein fork() kopiert den GANZEN Speicherbereich deines Prozesses in einen neuen Bereich. Das alleine kann schon ganz schön dauern. Ein neuer Thread tut in deinem Falle genau das gleiche. Oder willst du wirklich für den neuen Kind-Prozess die komplette Prozessumgebung haben? Bezweifle ich.
In deinem Fall leite einfach von QThread ab, schreib dir setter/getter, für alle Daten die du brauchst, implementier run(), und gut ist.