Zitat von
HaWe
dankeschön, also wäre joinable die bessere Strategie...
join aber haißt doch "beitreten, verbinden" -
am Schluss will ich ihn aber doch beenden (gerade wenn er sich aufgehängt hat, um ihn dann neu zu starten):
wieso dann "join=beitreten" - mir ist das Konzept hinter join noch nicht klar....
Ja, eher zusammenführen der zwei Anläufe.
In der Regel nutze ich die C++11 threads.
Das sieht dann etwa so aus:
Code:
#include <thread>
#include <atomic>
#include <iostream>
std::atomic<bool> thread_run { true };
void execute()
{
int i = 0;
while (thread_run.load())
{
// do work
std::cout << "Hello from Thread: " << i++ << std::endl;
std::this_thread::sleep_for(std::chrono::seconds(1));
}
}
int main(int argc, char** argv)
{
std::thread worker(&execute);
std::this_thread::sleep_for(std::chrono::seconds(5));
thread_run = false;
if (worker.joinable())
{
worker.join();
}
return EXIT_SUCCESS;
}
g++ main.cpp -lpthread
georg@hammerhead /tmp ./a.out
Hello from Thread: 0
Hello from Thread: 1
Hello from Thread: 2
Hello from Thread: 3
Hello from Thread: 4
Lesezeichen