Hallo!
Ich erstelle mit dem Visual Studio eine neue Konsolenanwendung mit MFC-Unterstützung. Im main-Teil rufe ich dann zwei Threads auf. Nachstehendes zeigt wie ich das mache:
AfxBeginThread(MeinThread1, NULL);
AfxBeginThread(MeinThread2, NULL);
Der Compiler meldet keinen Fehler. Wenn ich das Programm laufen lasse tut es fast genau das was ich möchte. Jeder der beiden Threads gibt 11 mal eine Meldung aus. Thread1 „Hallo“ und Thread2 „Ciao“. Wenn ich dann aber das Ausgabefenster mir anschaue sehe ich elf mal hintereinander unterbrechungsfrei „Hallo“. Danach elf mal unterbrechungsfrei „Ciao“. DAs lässt darauf schließen, dass die main eine Funktion aufruft und wenn die abgearbeitet ist, ruft sie die zweite auf und wenn das auch passiert ist, wird die main weiter abgearbeitet.
Dazu bräuchte ich aber keinen Thread! Das könnte auch eine simple FUnktion. Beim Threading ist der Vorteil das beide Threads parallel arbeiten und die main ebenfalls nachdem beide aufgerufen wurden sofort weiterarbeitet, ohne zu warten bis beide nacheinander fertig sind. Das ist doch Quatsch was da läuft! Im Ausgabefenster müsste durcheinander „Hallo“ und „Ciao“ erscheinen. Also zum Beispiel „HalloHalloCiaoHalloCiaoCiao“ und so weiter.
Was läuft da schief? Ich kenne bis jetzt Threads nur aus QT (recht unbekannte Form von C++ aus der Linuxwelt um es ohne lange Rede zu umschreiben). Hat jemand eine Idee? Fehlt vielleicht eine Art Priorität? Aber wenn alle gleichberechtig sein sollen macht das glaube ich nicht wirklich Sinn. An den Includes kann es nicht liegen, weil das habe ich in meiner Verzweiflung schon mit Ausprobieren herausbekommen.
Ich bin für jede Zuschrift dankbar!
Gruß Christian