[boost] Thread-Klasse
-
Ich hab jetzt mal das Example von http://en.cppreference.com/w/cpp/thread/thread/thread genommen
#include <iostream> #include <utility> #include <thread> #include <chrono> #include <functional> #include <atomic> void f1(int n) { for(int i=0; i<5; ++i) { std::cout << "Thread " << n << " executing\n"; std::this_thread::sleep_for(std::chrono::milliseconds(10)); } } void f2(int& n) { for(int i=0; i<5; ++i) { std::cout << "Thread 2 executing\n"; ++n; std::this_thread::sleep_for(std::chrono::milliseconds(10)); } } int main() { int n = 0; std::thread t1; // t1 is not a thread std::thread t2(f1, n+1); // pass by value std::thread t3(f2, std::ref(n)); // pass by reference std::thread t4(std::move(t3)); // t4 is now running f2(). t3 is no longer a thread t2.join(); t4.join(); std::cout << "Final value of n is " << n << '\n'; }
und es probiert mit g++ test.cpp -o test -std=c++0x compiliert. Beim Ausführen kommt
terminate called after throwing an instance of 'std::system_error' what(): Operation not permitted Abgebrochen (Speicherabzug geschrieben)
Was hab ich diesmal veregssen?
@pumuckl: Es gibt schon so eine Klasse? Warum finde ich die nicht
-
SeppJ schrieb:
[...] Und wenn du das gemacht hast, auch noch den Compilerschalter -pthread (sowohl beim Linken als auch beim Compilieren).
[...]
-
Kein Kommentar xDD Danke
-
Glocke schrieb:
Ich hab jetzt mal das Example von http://en.cppreference.com/w/cpp/thread/thread/thread genommen
[...]
@pumuckl: Es gibt schon so eine Klasse? Warum finde ich die nichtDies ist alles sehr verwirrend...
-
Glocke schrieb:
@pumuckl: Es gibt schon so eine Klasse? Warum finde ich die nicht
Jup, die nennt sich std::thread... warum du nicht findest, was du die ganze Zeit schon benutzt, versteh ich auch nicht
-
Mal abgesehen davon, dass die Java-Threads so ziemlich der groesste Design-Fail ueberhaupt sind. Pfui Teufel.
-
Kellerautomat schrieb:
Mal abgesehen davon, dass die Java-Threads so ziemlich der groesste Design-Fail ueberhaupt sind. Pfui Teufel.
Na wenn der mächtige Kellerautomat das sagt muss es ja wohl stimmen einself.
-
class Thread implements Runnable
-
Und das ist jetzt schlimm weil ...?
-
Ein Thread ist nichts, das man ausfuehrt, sondern etwas, das man etwas ausfuehren laesst. Daher zu behaupten, ein Thread sei ein Runnable (= implements), ist voelliger Schwachsinn. Sollte daher eher so sein:
class Thread { private Runnable runnable; // ... }
Und dann haette Thread auch keine run()-Methode, die das Runnable im selben Thread ausfuehrt.
-
Und deswegen ist die ganze Java-Threads Implementierung ein einziger Design-Fail. Hätten wir das auch geklärt.
-
Das Interface ist ein Design-Fail. Jop. :p