mehrere threads oder mehrere prozesse
-
hola
wenn man mehrere aufgaben zu loesen hat die ueber einen laengeren zeitraum gehen, sollte man dann mehrere prozesse oder mehrere threads verwenden ?
gibt es da ueberhaupt unterschiede bzw. vor und nachteile ?Meep Meep
PS: ist eine rein theoretische frage
-
wenn das ganze zusammengehört, quasi eine Applikation darstellen soll, dann auf jeden Fall Threads.
Die Kommunikation über Prozessgrenzen hinweg ist immer mit mehr Aufwand verbunden als wenn du nur von einem Thread zum anderen kommunizierst.Da mehrere Threads dem gleichen Prozess angehören, haben diese auch den gleichen Adressraum, somit kann man ganz einfach auf gemeinsamen Speicher zugreifen, ohne irgendeinen Overhead (gut, meist ist dann noch eine Synchronisation nötig).
Mehrere Prozesse hingegen haben unterschiedliche Adressräume. Dadurch wird verhindert, dass ein anderer Prozess mal einfach so in einen fremden Adressraum "reinpfuschen" kann.
Die Kommunikation zwischen den Prozessen ist aufwendiger, jedenfalls sind Funktionen (syscalls) des Betriebssystems nötig.
WinAPI kenn ich jetzt nicht so, in Linux gibts z.B. Interprozesskommunikation über "Qusasidateien", also man kann auf die Dateien vom Programm aus wie auf normale Dateien zugreifen, sie werden allerdings nicht tatsächlich auf der Festplatte gespeichert, sondern liegen nur im Page Cache im RAM. Damit umgeht man den Flaschenhals der Festplatte, ändert aber nichts daran dass man syscalls braucht.