Cpp Threads wie in Java
Hallo Community,
mich würde es interessieren ob man das Threading-Modell von Java auf C++ übertragen kann.
Wie würde dieses Java-Programm in C++ aussehen:
Bei C++ ist das Problem, dass der Main-Thread angehalten wird bis die erstellten Threads abgearbeitet sind:
Ich hoffe ihr könnt mir hierbei helfen.
-EinTyp-
mich würde es interessieren ob man das Threading-Modell von Java auf C++ übertragen kann.
Wie würde dieses Java-Programm in C++ aussehen:
public class Threading {
public static void main(String args) {
System.out.println("start");
Thread t = new Thread(new Runnable() {
public void run() {
for (int i=0; i<10; ++i) {
System.out.println(i);
try { Thread.sleep(50); } catch (InterruptedException ex) { }
}
}
});
t.start();
System.out.println("done.");
}
}
Bei C++ ist das Problem, dass der Main-Thread angehalten wird bis die erstellten Threads abgearbeitet sind:
#include <iostream>
#include <boost/thread.hpp>
void run() {
for (int i=0; i<10; ++i) {
std::cout << i << std::endl;
boost::this_thread::sleep(boost::posix_time::milliseconds(50));
}
}
int main(int argc, char** argv) {
std::cout << "start" << std::endl;
boost::thread t(run);
t.join();
std::cout << "done" << std::endl;
return 0;
}
Ich hoffe ihr könnt mir hierbei helfen.
-EinTyp-
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 193369
Url: https://administrator.de/contentid/193369
Ausgedruckt am: 05.11.2024 um 16:11 Uhr
3 Kommentare
Neuester Kommentar
Was heisst denn "wie in Java"? Java ist eine Emulator/Interpreter-Umgebung, die viel weniger Möglichkeiten bietet als nativer Code.
Wenn Du einen einzelnen Thread startest und wartest bis sich dieser mit dem Aufrufer vereinigt, hättest Du Deinen Code auch direkt im Aufruferkontext laufen lassen können.
Wenn Du mit "irgendeiner Threadingbibliothek" einen neuen Thread erzeugst, der dann in seiner eigenen Hauptfunktion läuft, ist dieser natürlich vom Aufruferthread abgekoppelt und hat einen eigenen Ausführungskontext (vom Betriebssystem) erhalten.
Wenn Du einen einzelnen Thread startest und wartest bis sich dieser mit dem Aufrufer vereinigt, hättest Du Deinen Code auch direkt im Aufruferkontext laufen lassen können.
Wenn Du mit "irgendeiner Threadingbibliothek" einen neuen Thread erzeugst, der dann in seiner eigenen Hauptfunktion läuft, ist dieser natürlich vom Aufruferthread abgekoppelt und hat einen eigenen Ausführungskontext (vom Betriebssystem) erhalten.