gajUli Geschrieben 5. April 2002 Geschrieben 5. April 2002 Das Wort "Thread" hat noch eine andere Bedeutung, naemlich "Process" oder "Task" oder allgemeiner, die "Jobs", die eine Maschine zu erledigen hat, und das koennen ja u. U. sehr viele sein. Zitieren
Woodstock Geschrieben 5. April 2002 Autor Geschrieben 5. April 2002 Aha. Hatte ich bisher noch nichts von gehört. Bine Zitieren
Orffi Geschrieben 5. April 2002 Geschrieben 5. April 2002 Windows zum Beispiel ist ein Multitasking Betriebssystem. Das bedeutet, daß mehrere Programme "gleichzeitig" laufen können. Jedes Programm ist ein Prozeß. Da man normalerweise aber nur einen Prozessor zur Verfügung hat, kann nur ein Prozeß die Ressource Prozessor benutzen. Unter Multitasking Betriebssystemen findet also ständig ein Wechsel der Prozesse statt. Das hat weitreichende Konsequenzen, weil zum Beispiel die Register der CPU und der Gleichen mehr gesichert werden müssen, damit man sie später, wenn der Prozeß wieder CPU-Zeit bekommt, wieder zur Verfügung hat und die Situation die Gleiche ist wie vor der Unterbrechung. Ein Thread ist der "kleine Bruder" eines Prozesses, er wird deswegen auch leichter Prozeß genannt. Ein Thread gehört immer zu genau einem Prozeß aber ein Prozeß kann mehrere Threads haben. Hier ist das Probem ähnlich. Hier müssen auch ein paar Daten gesichert werden, bevor innerhalb des Prozesses ein anderer Thread zum Zuge kommt. Allerdings ist ein Threadwechsel schneller, da nicht so viele Daten gesichert werden müssen. Aber es kostet halt Zeit. HTH Jan PS: Oh, da seid ihr ja alle schneller als ich gewesen... @Woodstock: Das tut mir leid, ich hatte jetzt gar nicht auf der Rechnung, daß die Beiträge auch Threads sind. Die meinte ich aber nicht. Zitieren
primatee Geschrieben 5. April 2002 Geschrieben 5. April 2002 Hi, Gilt noch zwischen preemptives und kooperatives Multitasking zu Unterscheiden. Im kooperativen Multitasking ist ein Threadwechsel vom Programm abhängig, sprich erst ein PostMessage erlaubt es dem Kernel die Ausführung an den nächsten Thread zu geben. Galt noch unter Win 3x bzw. 16 Bit. Beim preemptiven Multitasting hingegen werden die Threads so oder so umgeschaltet. Daher müssen auch immer alle Register und Co gesichert werden. Ein Thread bekommt im Zeitscheibenverfahren ca 20 ms zur Verfügung gestellt und dann kommt der nächste. Gilt seit Win 95 bzw. 32 Bit. Ein Prozeß ist ein initial Thread oder primary Thread. Von hier aus kannst können dann weiter Threads erzeugt werden oder auch wiederum neue Prozeße. Der Unterschied .... ach so viel wollte ich nun auch nicht schreiben . Jedenfalls können ab Win 95 (preemtiv) auch die alten 16 Bit Programme laufen. Dazu wird ein VM geladen, wo dann ein kooperatives Multitasking abläuft, sprich konkurierende Prozeße. Das Problem mit dem Blinken. Nunja... Das kannst Du mit VC++ (Consolenanwendung) nicht erzeugen, da dort das Bit 7, welches normalerweise für das blinken zuständig ist, als Intensitätsflag für die Hintergrundfarbe eingesetzt wird. Sprich dunkles Hintergrundrot wird heller wenn dieses Bit gesetzt ist. Man kann halt nicht alles haben. Turbo C kann das, aber ich weiß nicht ob es da eine 16-Bit Anwendung erzeugt. Eine Consolenanwendung unter VC++ ist jedenfalls eine 32-Bit Anwendung. Es läuft also nicht in einer VM für 16-Bit Programme, denn nur dort, so schätze ich, würde der Text blinken, da andere Module zum Einsatz kommen. Weiterhin werden in der VM für 16-Bit Programme Zeiger und Interrupts gemappt. Sprich auf entspr. Routinen umgeleitet, Wie z.B. der Zugriff auf den Grafikspeicher. Bei einer 32-Bit Consolenanwendung geschieht dies halt nicht und da, so glaube ich, liegt der Hund begraben. hth primatee Zitieren
brixxie Geschrieben 10. April 2002 Geschrieben 10. April 2002 Ich weiß nicht ob es bei vc++ auch funkst aber hast du schon mal textattr(0x??); probiert? Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.