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-
Please also mark the comments that contributed to the solution of the article
Content-Key: 193369
Url: https://administrator.de/contentid/193369
Printed on: May 6, 2024 at 03:05 o'clock
3 Comments
Latest comment
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.