Zitat Zitat von HaWe Beitrag anzeigen
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